From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 563BE3C944C for ; Wed, 25 Mar 2026 12:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440635; cv=none; b=Pl+15GgRdy3wFZynCPwkxrbP0K6URoo2sVDIIZb3QuejASEx1Xe2QuDQOEpvy1T/dN6pGYPL/xIxjvOxy4zBHJcHHuKTHt8X7qqcUGfYM/Mh8ehn3xTq3ckl49ECJW02+6vQw9Uw2jtGNlVo0nyxLaq1waUwAlpgF/5XonjrT3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440635; c=relaxed/simple; bh=PZBc2xzXhgCdopvSEs7LvOSsryId8Z9gIEXaL5dk6WA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cFjkkNhtYVfGTXsy8g2g8GzCHu3/l5xxVNkAgWe1wD1QgDGyB2kl40qatb/Tgw/esYibtvpq+yx+kNpznu6eNCUiYRnc66I+zuwF/da1CnmnAyV1FlPxHWBhJ4YQPTz1kpXy7Lt4ThK5i4/fpF8eXfelVYci2EUub/IPPlVTgYk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=PCNe6a6y; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=jgn3fKL6; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=ROutafLy; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=In62gLJv; arc=none smtp.client-ip=195.135.223.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="PCNe6a6y"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="jgn3fKL6"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="ROutafLy"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="In62gLJv" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 4C17C4D22F; Wed, 25 Mar 2026 12:10:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440627; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yYiXjEyJ66LbryqyYnvS9TFVRn5AoA5JO51p7ckHlzE=; b=PCNe6a6yDtUcyLawmI+eFlkSFzjJLGRR9sqREPFfzQQ0spEk7+1dWAycqjLVWjrIhNWIPz Pk5ErNbv4o4iYxI1fKu+eibTDTT7aB++R7MfmDRpTviCJJplLNthlXtcvtp9jW2T6AQdDD lBo4DjgNiQtMldnKKEKOjcOrKjmnmHM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440627; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yYiXjEyJ66LbryqyYnvS9TFVRn5AoA5JO51p7ckHlzE=; b=jgn3fKL6Q6nkuAkpyEtwkwu0wBZVjkspJC+4vey4jDcQekJm5lMmhIaPXlugChtMHSRJrd wG9ZdPzKwLBLKJAg== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440626; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yYiXjEyJ66LbryqyYnvS9TFVRn5AoA5JO51p7ckHlzE=; b=ROutafLyWHNimxXYVS8HBZrIuOGZb59BnyaMZCgKAaXCV07NZ5ONhDhIG6pe7neJp2jKfE CzyxeFCyrzEErqsvGUUMTw3kTSLlGQT4KG1d35CMntb+A9UtrVT462aZTifgvSlOVibaFE esJ4U5TxWYYaDxvhm0M9sUhRPoZslzw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440626; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yYiXjEyJ66LbryqyYnvS9TFVRn5AoA5JO51p7ckHlzE=; b=In62gLJvQCI7+6fCOy5JtHYkEmOQgROJ59p5cf+3LJ7r2yIUldkt006dfIQH/mkwenyIR+ W3/VGJnWiYZKOXDA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 70095443BD; Wed, 25 Mar 2026 12:10:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id mKxXGK7Qw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:10:22 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , Krzysztof Kozlowski , Geert Uytterhoeven , Jason Gunthorpe , Leon Romanovsky , Selvin Xavier , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ido Schimmel , Petr Machata , Simon Horman , Saurav Kashyap , Javed Hasan , GR-QLogic-Storage-Upstream@marvell.com, "James E.J. Bottomley" , "Martin K. Petersen" , Nilesh Javali , Manish Rangankar , Varun Prakash , Alexander Aring , David Teigland , Andreas Gruenbacher , Nikolay Aleksandrov , David Ahern , Pablo Neira Ayuso , Florian Westphal , Phil Sutter , David Howells , Marc Dionne , Marcelo Ricardo Leitner , Xin Long , Jon Maloy , Krzysztof Kozlowski , Bjorn Andersson , Arnd Bergmann , Florian Fainelli , Eric Biggers , Michal Simek , Luca Weiss , Sven Peter , Lad Prabhakar , Kuninori Morimoto , Andrew Morton , Herbert Xu , David Gow , Ryota Sakamoto , Kir Chou , Kuniyuki Iwashima , Kuan-Wei Chiu , Vikas Gupta , Bhargava Marreddy , Rajashekar Hudumula , Heiner Kallweit , =?UTF-8?q?Markus=20Bl=C3=B6chl?= , linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-rdma@vger.kernel.org, oss-drivers@corigine.com, linux-scsi@vger.kernel.org, gfs2@lists.linux.dev, bridge@lists.linux.dev, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-afs@lists.infradead.org, linux-sctp@vger.kernel.org, tipc-discussion@lists.sourceforge.net Subject: [PATCH 01/11 net-next v5] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs Date: Wed, 25 Mar 2026 13:08:42 +0100 Message-ID: <20260325120928.15848-2-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -5.80 X-Spam-Level: X-Spamd-Result: default: False [-5.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; TAGGED_RCPT(0.00)[netdev]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; MIME_TRACE(0.00)[0:+]; URIBL_BLOCKED(0.00)[linux-m68k.org:url,suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo,suse.com:email,tldp.org:url]; RCVD_TLS_ALL(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; FREEMAIL_CC(0.00)[suse.de,suse.com,kernel.org,linux-m68k.org,ziepe.ca,broadcom.com,lunn.ch,davemloft.net,google.com,redhat.com,nvidia.com,marvell.com,HansenPartnership.com,oracle.com,chelsio.com,blackwall.org,netfilter.org,strlen.de,nwl.cc,auristor.com,gmail.com,oss.qualcomm.com,arndb.de,amd.com,fairphone.com,bp.renesas.com,renesas.com,linux-foundation.org,gondor.apana.org.au,davidgow.net,hotmail.com,blochl.de,vger.kernel.org,lists.linux-m68k.org,corigine.com,lists.linux.dev,lists.infradead.org,lists.sourceforge.net]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCPT_COUNT_GT_50(0.00)[71]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo] X-Spam-Flag: NO Maintaining a modular IPv6 stack offers image size savings for specific setups, this benefit is outweighed by the architectural burden it imposes on the subsystems on implementation and maintenance. Therefore, drop it. Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig dependencies across the tree that explicitly checked for IPV6=3Dm. In addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR() and MODULE_LICENSE(). This is also replacing module_init() by device_initcall(). It is not possible to use fs_initcall() as IPv4 does because that creates a race condition on IPv6 addrconf. Finally, modify the default configs from CONFIG_IPV6=3Dm to CONFIG_IPV6=3Dy except for m68k as according to the bloat-o-meter the image is increasing by 330KB~ and that isn't acceptable. Instead, disable IPv6 on this architecture by default. This is aligned with m68k RAM requirements and recommendations [1]. [1] http://www.linux-m68k.org/faq/ram.html Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re Acked-by: Krzysztof Kozlowski # arm64 --- arch/arm64/configs/defconfig | 2 +- arch/m68k/configs/amiga_defconfig | 44 +-------------------- arch/m68k/configs/apollo_defconfig | 44 +-------------------- arch/m68k/configs/atari_defconfig | 44 +-------------------- arch/m68k/configs/bvme6000_defconfig | 44 +-------------------- arch/m68k/configs/hp300_defconfig | 44 +-------------------- arch/m68k/configs/mac_defconfig | 44 +-------------------- arch/m68k/configs/multi_defconfig | 44 +-------------------- arch/m68k/configs/mvme147_defconfig | 44 +-------------------- arch/m68k/configs/mvme16x_defconfig | 44 +-------------------- arch/m68k/configs/q40_defconfig | 44 +-------------------- arch/m68k/configs/sun3_defconfig | 44 +-------------------- arch/m68k/configs/sun3x_defconfig | 44 +-------------------- drivers/infiniband/Kconfig | 1 - drivers/infiniband/hw/ocrdma/Kconfig | 2 +- drivers/infiniband/ulp/ipoib/Kconfig | 2 +- drivers/net/Kconfig | 9 ----- drivers/net/ethernet/broadcom/Kconfig | 2 +- drivers/net/ethernet/chelsio/Kconfig | 2 +- drivers/net/ethernet/mellanox/mlxsw/Kconfig | 1 - drivers/net/ethernet/netronome/Kconfig | 1 - drivers/scsi/bnx2fc/Kconfig | 1 - drivers/scsi/bnx2i/Kconfig | 1 - drivers/scsi/cxgbi/cxgb3i/Kconfig | 2 +- drivers/scsi/cxgbi/cxgb4i/Kconfig | 2 +- fs/dlm/Kconfig | 2 +- fs/gfs2/Kconfig | 2 +- net/bridge/Kconfig | 1 - net/ipv4/Kconfig | 9 ++--- net/ipv6/Kconfig | 6 +-- net/ipv6/af_inet6.c | 8 +--- net/l2tp/Kconfig | 1 - net/netfilter/Kconfig | 8 ---- net/rxrpc/Kconfig | 2 +- net/sctp/Kconfig | 1 - net/tipc/Kconfig | 1 - 36 files changed, 40 insertions(+), 557 deletions(-) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index b67d5b1fc45b..0651a771f5c1 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -140,7 +140,7 @@ CONFIG_IP_MULTICAST=3Dy CONFIG_IP_PNP=3Dy CONFIG_IP_PNP_DHCP=3Dy CONFIG_IP_PNP_BOOTP=3Dy -CONFIG_IPV6=3Dm +CONFIG_IPV6=3Dy CONFIG_NETFILTER=3Dy CONFIG_BRIDGE_NETFILTER=3Dm CONFIG_NF_CONNTRACK=3Dm diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_de= fconfig index 31d16cba9879..c8b936bb702f 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig @@ -72,15 +72,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -96,7 +88,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -113,7 +104,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -121,8 +111,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -197,6 +185,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -218,29 +207,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -251,7 +219,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -270,13 +237,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_= defconfig index c0c419ec9a9e..fc1792495bbc 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig @@ -68,15 +68,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -92,7 +84,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -109,7 +100,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -117,8 +107,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -193,6 +181,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -214,29 +203,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -247,7 +215,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -266,13 +233,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_de= fconfig index 2b7547ecc4c4..e440c596e60b 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig @@ -75,15 +75,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -99,7 +91,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -116,7 +107,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -124,8 +114,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -200,6 +188,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -221,29 +210,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -254,7 +222,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -273,13 +240,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6= 000_defconfig index 0b63787cff0d..7aa352d14363 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig @@ -65,15 +65,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -89,7 +81,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -106,7 +97,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -114,8 +104,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -190,6 +178,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -211,29 +200,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -244,7 +212,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -263,13 +230,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_de= fconfig index 308836b60bba..0baaf2a82c61 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig @@ -67,15 +67,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -91,7 +83,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -108,7 +99,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -116,8 +106,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -192,6 +180,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -213,29 +202,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -246,7 +214,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -265,13 +232,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defcon= fig index 97e108c0d24f..0cbbfe5aeaec 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig @@ -66,15 +66,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -90,7 +82,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -107,7 +98,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -115,8 +105,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -191,6 +179,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -212,29 +201,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -245,7 +213,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -264,13 +231,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_de= fconfig index 7e9f83af9af4..2b96f90e1a4d 100644 --- a/arch/m68k/configs/multi_defconfig +++ b/arch/m68k/configs/multi_defconfig @@ -86,15 +86,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -110,7 +102,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -127,7 +118,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -135,8 +125,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -211,6 +199,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -232,29 +221,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -265,7 +233,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -284,13 +251,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme14= 7_defconfig index 2fe33271d249..b49264cec911 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig @@ -64,15 +64,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -88,7 +80,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -105,7 +96,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -113,8 +103,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -189,6 +177,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -210,29 +199,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -243,7 +211,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -262,13 +229,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16= x_defconfig index 4308daaa7f74..96a974b0a766 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig @@ -65,15 +65,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -89,7 +81,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -106,7 +97,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -114,8 +104,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -190,6 +178,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -211,29 +200,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -244,7 +212,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -263,13 +230,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defcon= fig index 36eb29ec54ee..e53361584393 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig @@ -66,15 +66,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -90,7 +82,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -107,7 +98,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -115,8 +105,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -191,6 +179,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -212,29 +201,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -245,7 +213,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -264,13 +231,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defc= onfig index 524a89fa6953..af89287c1093 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig @@ -61,15 +61,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -85,7 +77,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -102,7 +93,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -110,8 +100,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -186,6 +174,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -207,29 +196,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -240,7 +208,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -259,13 +226,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_de= fconfig index f4fbc65c52d9..af210e8b77f9 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig @@ -62,15 +62,7 @@ CONFIG_INET_IPCOMP=3Dm CONFIG_INET_DIAG=3Dm CONFIG_INET_UDP_DIAG=3Dm CONFIG_INET_RAW_DIAG=3Dm -CONFIG_IPV6=3Dm -CONFIG_IPV6_ROUTER_PREF=3Dy -CONFIG_INET6_AH=3Dm -CONFIG_INET6_ESP=3Dm -CONFIG_INET6_ESP_OFFLOAD=3Dm -CONFIG_INET6_IPCOMP=3Dm -CONFIG_IPV6_ILA=3Dm -CONFIG_IPV6_VTI=3Dm -CONFIG_IPV6_GRE=3Dm +# CONFIG_IPV6 is not set CONFIG_NETFILTER=3Dy CONFIG_NETFILTER_NETLINK_HOOK=3Dm CONFIG_NF_CONNTRACK=3Dm @@ -86,7 +78,6 @@ CONFIG_NF_CONNTRACK_SANE=3Dm CONFIG_NF_CONNTRACK_SIP=3Dm CONFIG_NF_CONNTRACK_TFTP=3Dm CONFIG_NF_TABLES=3Dm -CONFIG_NF_TABLES_INET=3Dy CONFIG_NF_TABLES_NETDEV=3Dy CONFIG_NFT_NUMGEN=3Dm CONFIG_NFT_CT=3Dm @@ -103,7 +94,6 @@ CONFIG_NFT_QUOTA=3Dm CONFIG_NFT_REJECT=3Dm CONFIG_NFT_COMPAT=3Dm CONFIG_NFT_HASH=3Dm -CONFIG_NFT_FIB_INET=3Dm CONFIG_NFT_XFRM=3Dm CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_OSF=3Dm @@ -111,8 +101,6 @@ CONFIG_NFT_TPROXY=3Dm CONFIG_NFT_SYNPROXY=3Dm CONFIG_NFT_DUP_NETDEV=3Dm CONFIG_NFT_FWD_NETDEV=3Dm -CONFIG_NFT_FIB_NETDEV=3Dm -CONFIG_NFT_REJECT_NETDEV=3Dm CONFIG_NF_FLOW_TABLE_INET=3Dm CONFIG_NF_FLOW_TABLE=3Dm CONFIG_NETFILTER_XTABLES_LEGACY=3Dy @@ -187,6 +175,7 @@ CONFIG_IP_SET_HASH_NETNET=3Dm CONFIG_IP_SET_HASH_NETPORT=3Dm CONFIG_IP_SET_HASH_NETIFACE=3Dm CONFIG_IP_SET_LIST_SET=3Dm +CONFIG_NF_TABLES_IPV4=3Dy CONFIG_NFT_DUP_IPV4=3Dm CONFIG_NFT_FIB_IPV4=3Dm CONFIG_NF_TABLES_ARP=3Dy @@ -208,29 +197,8 @@ CONFIG_IP_NF_TARGET_TTL=3Dm CONFIG_IP_NF_RAW=3Dm CONFIG_IP_NF_ARPFILTER=3Dm CONFIG_IP_NF_ARP_MANGLE=3Dm -CONFIG_NFT_DUP_IPV6=3Dm -CONFIG_NFT_FIB_IPV6=3Dm -CONFIG_IP6_NF_IPTABLES=3Dm -CONFIG_IP6_NF_MATCH_AH=3Dm -CONFIG_IP6_NF_MATCH_EUI64=3Dm -CONFIG_IP6_NF_MATCH_FRAG=3Dm -CONFIG_IP6_NF_MATCH_OPTS=3Dm -CONFIG_IP6_NF_MATCH_HL=3Dm -CONFIG_IP6_NF_MATCH_IPV6HEADER=3Dm -CONFIG_IP6_NF_MATCH_MH=3Dm -CONFIG_IP6_NF_MATCH_RPFILTER=3Dm -CONFIG_IP6_NF_MATCH_RT=3Dm -CONFIG_IP6_NF_MATCH_SRH=3Dm -CONFIG_IP6_NF_TARGET_HL=3Dm -CONFIG_IP6_NF_TARGET_REJECT=3Dm -CONFIG_IP6_NF_TARGET_SYNPROXY=3Dm -CONFIG_IP6_NF_RAW=3Dm -CONFIG_IP6_NF_NAT=3Dm -CONFIG_IP6_NF_TARGET_MASQUERADE=3Dm -CONFIG_IP6_NF_TARGET_NPT=3Dm CONFIG_NF_TABLES_BRIDGE=3Dm CONFIG_NFT_BRIDGE_META=3Dm -CONFIG_NFT_BRIDGE_REJECT=3Dm CONFIG_NF_CONNTRACK_BRIDGE=3Dm CONFIG_BRIDGE_NF_EBTABLES_LEGACY=3Dm CONFIG_BRIDGE_NF_EBTABLES=3Dm @@ -241,7 +209,6 @@ CONFIG_BRIDGE_EBT_802_3=3Dm CONFIG_BRIDGE_EBT_AMONG=3Dm CONFIG_BRIDGE_EBT_ARP=3Dm CONFIG_BRIDGE_EBT_IP=3Dm -CONFIG_BRIDGE_EBT_IP6=3Dm CONFIG_BRIDGE_EBT_LIMIT=3Dm CONFIG_BRIDGE_EBT_MARK=3Dm CONFIG_BRIDGE_EBT_PKTTYPE=3Dm @@ -260,13 +227,6 @@ CONFIG_RDS_TCP=3Dm CONFIG_L2TP=3Dm CONFIG_BRIDGE=3Dm CONFIG_ATALK=3Dm -CONFIG_6LOWPAN=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=3Dm -CONFIG_6LOWPAN_GHC_UDP=3Dm -CONFIG_6LOWPAN_GHC_ICMPV6=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=3Dm -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=3Dm CONFIG_DNS_RESOLVER=3Dy CONFIG_BATMAN_ADV=3Dm # CONFIG_BATMAN_ADV_BATMAN_V is not set diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig index 78ac2ff5befd..23f4245f7d7d 100644 --- a/drivers/infiniband/Kconfig +++ b/drivers/infiniband/Kconfig @@ -4,7 +4,6 @@ menuconfig INFINIBAND depends on HAS_IOMEM && HAS_DMA depends on NET depends on INET - depends on m || IPV6 !=3D m depends on !ALPHA select DMA_SHARED_BUFFER select IRQ_POLL diff --git a/drivers/infiniband/hw/ocrdma/Kconfig b/drivers/infiniband/hw/o= crdma/Kconfig index 54bd70bc4d1a..b50c5f507e7c 100644 --- a/drivers/infiniband/hw/ocrdma/Kconfig +++ b/drivers/infiniband/hw/ocrdma/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config INFINIBAND_OCRDMA tristate "Emulex One Connect HCA support" - depends on ETHERNET && NETDEVICES && PCI && INET && (IPV6 || IPV6=3Dn) + depends on ETHERNET && NETDEVICES && PCI && INET select NET_VENDOR_EMULEX select BE2NET help diff --git a/drivers/infiniband/ulp/ipoib/Kconfig b/drivers/infiniband/ulp/= ipoib/Kconfig index 254e31a90a66..b5253a231bdd 100644 --- a/drivers/infiniband/ulp/ipoib/Kconfig +++ b/drivers/infiniband/ulp/ipoib/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config INFINIBAND_IPOIB tristate "IP-over-InfiniBand" - depends on NETDEVICES && INET && (IPV6 || IPV6=3Dn) + depends on NETDEVICES && INET help Support for the IP-over-InfiniBand protocol (IPoIB). This transports IP packets over InfiniBand so you can use your IB diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index b2fd90466bab..edaab759dc50 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -41,7 +41,6 @@ if NET_CORE config BONDING tristate "Bonding driver support" depends on INET - depends on IPV6 || IPV6=3Dn depends on TLS || TLS_DEVICE=3Dn help Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet @@ -75,7 +74,6 @@ config DUMMY config WIREGUARD tristate "WireGuard secure network tunnel" depends on NET && INET - depends on IPV6 || !IPV6 select NET_UDP_TUNNEL select DST_CACHE select CRYPTO_LIB_CURVE25519 @@ -105,7 +103,6 @@ config WIREGUARD_DEBUG config OVPN tristate "OpenVPN data channel offload" depends on NET && INET - depends on IPV6 || !IPV6 select DST_CACHE select NET_UDP_TUNNEL select CRYPTO @@ -202,7 +199,6 @@ config IPVLAN_L3S config IPVLAN tristate "IP-VLAN support" depends on INET - depends on IPV6 || !IPV6 help This allows one to create virtual devices off of a main interface and packets will be delivered based on the dest L3 (IPv6/IPv4 addr) @@ -249,7 +245,6 @@ config VXLAN config GENEVE tristate "Generic Network Virtualization Encapsulation" depends on INET - depends on IPV6 || !IPV6 select NET_UDP_TUNNEL select GRO_CELLS help @@ -265,7 +260,6 @@ config GENEVE config BAREUDP tristate "Bare UDP Encapsulation" depends on INET - depends on IPV6 || !IPV6 select NET_UDP_TUNNEL select GRO_CELLS help @@ -308,7 +302,6 @@ config PFCP config AMT tristate "Automatic Multicast Tunneling (AMT)" depends on INET && IP_MULTICAST - depends on IPV6 || !IPV6 select NET_UDP_TUNNEL help This allows one to create AMT(Automatic Multicast Tunneling) @@ -480,7 +473,6 @@ config NET_VRF tristate "Virtual Routing and Forwarding (Lite)" depends on IP_MULTIPLE_TABLES depends on NET_L3_MASTER_DEV - depends on IPV6 || IPV6=3Dn depends on IPV6_MULTIPLE_TABLES || IPV6=3Dn help This option enables the support for mapping interfaces into VRF's. The @@ -615,7 +607,6 @@ config NETDEVSIM tristate "Simulated networking device" depends on DEBUG_FS depends on INET - depends on IPV6 || IPV6=3Dn depends on PSAMPLE || PSAMPLE=3Dn depends on PTP_1588_CLOCK_MOCK || PTP_1588_CLOCK_MOCK=3Dn select NET_DEVLINK diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/b= roadcom/Kconfig index cd7dddeb91dd..3190231c91da 100644 --- a/drivers/net/ethernet/broadcom/Kconfig +++ b/drivers/net/ethernet/broadcom/Kconfig @@ -96,7 +96,7 @@ config BNX2 =20 config CNIC tristate "QLogic CNIC support" - depends on PCI && (IPV6 || IPV6=3Dn) + depends on PCI select BNX2 select UIO help diff --git a/drivers/net/ethernet/chelsio/Kconfig b/drivers/net/ethernet/ch= elsio/Kconfig index c931ec8cac40..96d7779cd2f0 100644 --- a/drivers/net/ethernet/chelsio/Kconfig +++ b/drivers/net/ethernet/chelsio/Kconfig @@ -68,7 +68,7 @@ config CHELSIO_T3 =20 config CHELSIO_T4 tristate "Chelsio Communications T4/T5/T6 Ethernet support" - depends on PCI && (IPV6 || IPV6=3Dn) && (TLS || TLS=3Dn) + depends on PCI && (TLS || TLS=3Dn) depends on PTP_1588_CLOCK_OPTIONAL select FW_LOADER select MDIO diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethe= rnet/mellanox/mlxsw/Kconfig index 74f7e27b490f..2229a2694aa5 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig +++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig @@ -56,7 +56,6 @@ config MLXSW_SPECTRUM depends on MLXSW_CORE && MLXSW_PCI && NET_SWITCHDEV && VLAN_8021Q depends on PSAMPLE || PSAMPLE=3Dn depends on BRIDGE || BRIDGE=3Dn - depends on IPV6 || IPV6=3Dn depends on NET_IPGRE || NET_IPGRE=3Dn depends on IPV6_GRE || IPV6_GRE=3Dn depends on VXLAN || VXLAN=3Dn diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/= netronome/Kconfig index d03d6e96f730..d115d16d4649 100644 --- a/drivers/net/ethernet/netronome/Kconfig +++ b/drivers/net/ethernet/netronome/Kconfig @@ -33,7 +33,6 @@ config NFP_APP_FLOWER bool "NFP4000/NFP6000 TC Flower offload support" depends on NFP depends on NET_SWITCHDEV - depends on IPV6!=3Dm || NFP=3Dm default y help Enable driver support for TC Flower offload on NFP4000 and NFP6000. diff --git a/drivers/scsi/bnx2fc/Kconfig b/drivers/scsi/bnx2fc/Kconfig index 3cf7e08df809..d12eeb13384a 100644 --- a/drivers/scsi/bnx2fc/Kconfig +++ b/drivers/scsi/bnx2fc/Kconfig @@ -2,7 +2,6 @@ config SCSI_BNX2X_FCOE tristate "QLogic FCoE offload support" depends on PCI - depends on (IPV6 || IPV6=3Dn) depends on LIBFC depends on LIBFCOE select NETDEVICES diff --git a/drivers/scsi/bnx2i/Kconfig b/drivers/scsi/bnx2i/Kconfig index 75ace2302fed..e649a04fab1d 100644 --- a/drivers/scsi/bnx2i/Kconfig +++ b/drivers/scsi/bnx2i/Kconfig @@ -3,7 +3,6 @@ config SCSI_BNX2_ISCSI tristate "QLogic NetXtreme II iSCSI support" depends on NET depends on PCI - depends on (IPV6 || IPV6=3Dn) select SCSI_ISCSI_ATTRS select NETDEVICES select ETHERNET diff --git a/drivers/scsi/cxgbi/cxgb3i/Kconfig b/drivers/scsi/cxgbi/cxgb3i/= Kconfig index e20e6f3bfe64..143e881ec77e 100644 --- a/drivers/scsi/cxgbi/cxgb3i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb3i/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config SCSI_CXGB3_ISCSI tristate "Chelsio T3 iSCSI support" - depends on PCI && INET && (IPV6 || IPV6=3Dn) + depends on PCI && INET select NETDEVICES select ETHERNET select NET_VENDOR_CHELSIO diff --git a/drivers/scsi/cxgbi/cxgb4i/Kconfig b/drivers/scsi/cxgbi/cxgb4i/= Kconfig index 63c8a0f3cd0c..dd1c8ff36b00 100644 --- a/drivers/scsi/cxgbi/cxgb4i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb4i/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config SCSI_CXGB4_ISCSI tristate "Chelsio T4 iSCSI support" - depends on PCI && INET && (IPV6 || IPV6=3Dn) + depends on PCI && INET depends on PTP_1588_CLOCK_OPTIONAL depends on THERMAL || !THERMAL depends on ETHERNET diff --git a/fs/dlm/Kconfig b/fs/dlm/Kconfig index b46165df5a91..fb6ba9f5a634 100644 --- a/fs/dlm/Kconfig +++ b/fs/dlm/Kconfig @@ -2,7 +2,7 @@ menuconfig DLM tristate "Distributed Lock Manager (DLM)" depends on INET - depends on SYSFS && CONFIGFS_FS && (IPV6 || IPV6=3Dn) + depends on SYSFS && CONFIGFS_FS help A general purpose distributed lock manager for kernel or userspace applications. diff --git a/fs/gfs2/Kconfig b/fs/gfs2/Kconfig index 7bd231d16d4a..8beee571b6af 100644 --- a/fs/gfs2/Kconfig +++ b/fs/gfs2/Kconfig @@ -26,7 +26,7 @@ config GFS2_FS =20 config GFS2_FS_LOCKING_DLM bool "GFS2 DLM locking" - depends on (GFS2_FS!=3Dn) && NET && INET && (IPV6 || IPV6=3Dn) && \ + depends on (GFS2_FS!=3Dn) && NET && INET && \ CONFIGFS_FS && SYSFS && (DLM=3Dy || DLM=3DGFS2_FS) help Multiple node locking module for GFS2 diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig index 3c8ded7d3e84..318715c8fc9b 100644 --- a/net/bridge/Kconfig +++ b/net/bridge/Kconfig @@ -7,7 +7,6 @@ config BRIDGE tristate "802.1d Ethernet Bridging" select LLC select STP - depends on IPV6 || IPV6=3Dn help If you say Y here, then your Linux box will be able to act as an Ethernet bridge, which means that the different Ethernet segments it diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index df922f9f5289..21e5164e30db 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig @@ -191,7 +191,7 @@ config NET_IP_TUNNEL =20 config NET_IPGRE tristate "IP: GRE tunnels over IP" - depends on (IPV6 || IPV6=3Dn) && NET_IPGRE_DEMUX + depends on NET_IPGRE_DEMUX select NET_IP_TUNNEL help Tunneling means encapsulating data of one protocol type within @@ -303,7 +303,6 @@ config SYN_COOKIES =20 config NET_IPVTI tristate "Virtual (secure) IP: tunneling" - depends on IPV6 || IPV6=3Dn select INET_TUNNEL select NET_IP_TUNNEL select XFRM @@ -439,7 +438,7 @@ config INET_TCP_DIAG =20 config INET_UDP_DIAG tristate "UDP: socket monitoring interface" - depends on INET_DIAG && (IPV6 || IPV6=3Dn) + depends on INET_DIAG default n help Support for UDP socket monitoring interface used by the ss tool. @@ -447,7 +446,7 @@ config INET_UDP_DIAG =20 config INET_RAW_DIAG tristate "RAW: socket monitoring interface" - depends on INET_DIAG && (IPV6 || IPV6=3Dn) + depends on INET_DIAG default n help Support for RAW socket monitoring interface used by the ss tool. @@ -750,7 +749,7 @@ config TCP_AO select CRYPTO select CRYPTO_LIB_UTILS select TCP_SIGPOOL - depends on 64BIT && IPV6 !=3D m # seq-number extension needs WRITE_ONCE(u= 64) + depends on 64BIT # seq-number extension needs WRITE_ONCE(u64) help TCP-AO specifies the use of stronger Message Authentication Codes (MACs= ), protects against replays for long-lived TCP connections, and diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig index b8f9a8c0302e..c024aa77f25b 100644 --- a/net/ipv6/Kconfig +++ b/net/ipv6/Kconfig @@ -3,9 +3,8 @@ # IPv6 configuration # =20 -# IPv6 as module will cause a CRASH if you try to unload it menuconfig IPV6 - tristate "The IPv6 protocol" + bool "The IPv6 protocol" default y select CRYPTO_LIB_SHA1 help @@ -17,9 +16,6 @@ menuconfig IPV6 Documentation/networking/ipv6.rst and read the HOWTO at =20 - To compile this protocol support as a module, choose M here: the - module will be called ipv6. - if IPV6 =20 config IPV6_ROUTER_PREF diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index eb9fff86baa1..bb29b29fdcfb 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -70,10 +70,6 @@ =20 #include "ip6_offload.h" =20 -MODULE_AUTHOR("Cast of dozens"); -MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); -MODULE_LICENSE("GPL"); - /* The inetsw6 table contains everything that inet6_create needs to * build a new socket. */ @@ -1278,6 +1274,4 @@ static int __init inet6_init(void) proto_unregister(&tcpv6_prot); goto out; } -module_init(inet6_init); - -MODULE_ALIAS_NETPROTO(PF_INET6); +device_initcall(inet6_init); diff --git a/net/l2tp/Kconfig b/net/l2tp/Kconfig index b7856748e960..0de178d5baba 100644 --- a/net/l2tp/Kconfig +++ b/net/l2tp/Kconfig @@ -5,7 +5,6 @@ =20 menuconfig L2TP tristate "Layer Two Tunneling Protocol (L2TP)" - depends on (IPV6 || IPV6=3Dn) depends on INET select NET_UDP_TUNNEL help diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig index 6cdc994fdc8a..f3ea0cb26f36 100644 --- a/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig @@ -249,7 +249,6 @@ config NF_CONNTRACK_FTP =20 config NF_CONNTRACK_H323 tristate "H.323 protocol support" - depends on IPV6 || IPV6=3Dn depends on NETFILTER_ADVANCED help H.323 is a VoIP signalling protocol from ITU-T. As one of the most @@ -589,7 +588,6 @@ config NFT_QUOTA config NFT_REJECT default m if NETFILTER_ADVANCED=3Dn tristate "Netfilter nf_tables reject support" - depends on !NF_TABLES_INET || (IPV6!=3Dm || m) help This option adds the "reject" expression that you can use to explicitly deny and notify via TCP reset/ICMP informational errors @@ -636,7 +634,6 @@ config NFT_XFRM =20 config NFT_SOCKET tristate "Netfilter nf_tables socket match support" - depends on IPV6 || IPV6=3Dn select NF_SOCKET_IPV4 select NF_SOCKET_IPV6 if NF_TABLES_IPV6 help @@ -652,7 +649,6 @@ config NFT_OSF =20 config NFT_TPROXY tristate "Netfilter nf_tables tproxy support" - depends on IPV6 || IPV6=3Dn select NF_DEFRAG_IPV4 select NF_DEFRAG_IPV6 if NF_TABLES_IPV6 select NF_TPROXY_IPV4 @@ -1071,7 +1067,6 @@ config NETFILTER_XT_TARGET_MASQUERADE config NETFILTER_XT_TARGET_TEE tristate '"TEE" - packet cloning to alternate destination' depends on NETFILTER_ADVANCED - depends on IPV6 || IPV6=3Dn depends on !NF_CONNTRACK || NF_CONNTRACK depends on IP6_NF_IPTABLES || !IP6_NF_IPTABLES select NF_DUP_IPV4 @@ -1084,7 +1079,6 @@ config NETFILTER_XT_TARGET_TPROXY tristate '"TPROXY" target transparent proxying support' depends on NETFILTER_XTABLES depends on NETFILTER_ADVANCED - depends on IPV6 || IPV6=3Dn depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=3Dn depends on IP_NF_MANGLE || NFT_COMPAT select NF_DEFRAG_IPV4 @@ -1126,7 +1120,6 @@ config NETFILTER_XT_TARGET_SECMARK =20 config NETFILTER_XT_TARGET_TCPMSS tristate '"TCPMSS" target support' - depends on IPV6 || IPV6=3Dn default m if NETFILTER_ADVANCED=3Dn help This option adds a `TCPMSS' target, which allows you to alter the @@ -1581,7 +1574,6 @@ config NETFILTER_XT_MATCH_SOCKET tristate '"socket" match support' depends on NETFILTER_XTABLES depends on NETFILTER_ADVANCED - depends on IPV6 || IPV6=3Dn depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=3Dn select NF_SOCKET_IPV4 select NF_SOCKET_IPV6 if IP6_NF_IPTABLES diff --git a/net/rxrpc/Kconfig b/net/rxrpc/Kconfig index f60b81c66078..43416b3026fb 100644 --- a/net/rxrpc/Kconfig +++ b/net/rxrpc/Kconfig @@ -25,7 +25,7 @@ if AF_RXRPC =20 config AF_RXRPC_IPV6 bool "IPv6 support for RxRPC" - depends on (IPV6 =3D m && AF_RXRPC =3D m) || (IPV6 =3D y && AF_RXRPC) + depends on IPV6 help Say Y here to allow AF_RXRPC to use IPV6 UDP as well as IPV4 UDP as its network transport. diff --git a/net/sctp/Kconfig b/net/sctp/Kconfig index e947646a380c..fc989a3791b3 100644 --- a/net/sctp/Kconfig +++ b/net/sctp/Kconfig @@ -6,7 +6,6 @@ menuconfig IP_SCTP tristate "The SCTP Protocol" depends on INET - depends on IPV6 || IPV6=3Dn select CRYPTO_LIB_SHA1 select CRYPTO_LIB_SHA256 select CRYPTO_LIB_UTILS diff --git a/net/tipc/Kconfig b/net/tipc/Kconfig index bb0d71eb02a6..18f62135e47b 100644 --- a/net/tipc/Kconfig +++ b/net/tipc/Kconfig @@ -6,7 +6,6 @@ menuconfig TIPC tristate "The TIPC Protocol" depends on INET - depends on IPV6 || IPV6=3Dn help The Transparent Inter Process Communication (TIPC) protocol is specially designed for intra cluster communication. This protocol --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19A243D16F5 for ; Wed, 25 Mar 2026 12:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440642; cv=none; b=TJAMsr53OOZwNdim/QwqmlbRG7beX0gNG4SfzKMrmh0Warh4NtORC1GUfVqxV232De4uKGMbUBhLof9TlGgMym63E6obLS76WUVByvmgQY/kBCPqabhJWCPbRXIsyyZu5mWh2sFOVs4efDHbctT0NvJjDSlqfEF/y+KOBiswRFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440642; c=relaxed/simple; bh=kd2sGu8f2Cp1KpC5e+f/o6t4anlT+Qkh3o3NuBtjYv0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=htxWjxbNRSO4HRBSmEbSP/7kfb02SZPYSOOVuwlAzOce8khBmv4rumb6EDN5Heo8V+nEfccdhJ1tSFCx1Mr+ZRe5PbqsKAoiS6wkHhAFtEIu4kufHqTJ0cTKjUYUJ7pQfWBTtXay9oFS2xXbpKD93jIqvHGZ6LzZ65MRxWmKxzY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 88E875BCCF; Wed, 25 Mar 2026 12:10:36 +0000 (UTC) Authentication-Results: smtp-out2.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 409F1443BD; Wed, 25 Mar 2026 12:10:35 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id KIK3DLvQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:10:35 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Neal Cardwell , Kuniyuki Iwashima , Willem de Bruijn , Daniel Zahka , Stanislav Fomichev , Samiullah Khawaja , Hangbin Liu , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Ido Schimmel , Petr Machata , Breno Leitao , Kees Cook , linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH 02/11 net-next v5] net: remove EXPORT_IPV6_MOD() and EXPORT_IPV6_MOD_GPL() macros Date: Wed, 25 Mar 2026 13:08:43 +0100 Message-ID: <20260325120928.15848-3-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[]; TAGGED_RCPT(0.00)[] X-Rspamd-Queue-Id: 88E875BCCF X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Spam-Flag: NO X-Spam-Score: -4.00 X-Spam-Level: Content-Type: text/plain; charset="utf-8" As IPv6 is built-in only, the macro is always evaluating to an empty one. Remove it completely from the code. Signed-off-by: Fernando Fernandez Mancera --- include/net/ip.h | 8 -------- net/core/dev.c | 3 --- net/core/hotdata.c | 1 - net/core/neighbour.c | 1 - net/ipv4/inet_connection_sock.c | 2 -- net/ipv4/inet_hashtables.c | 5 ----- net/ipv4/inetpeer.c | 4 ---- net/ipv4/metrics.c | 1 - net/ipv4/ping.c | 16 ---------------- net/ipv4/syncookies.c | 4 ---- net/ipv4/tcp.c | 23 ----------------------- net/ipv4/tcp_fastopen.c | 1 - net/ipv4/tcp_input.c | 7 ------- net/ipv4/tcp_ipv4.c | 21 --------------------- net/ipv4/tcp_minisocks.c | 4 ---- net/ipv4/tcp_output.c | 6 ------ net/ipv4/tcp_timer.c | 1 - net/ipv4/udp.c | 29 ----------------------------- net/psp/psp_sock.c | 1 - 19 files changed, 138 deletions(-) diff --git a/include/net/ip.h b/include/net/ip.h index f39a3787fedd..7f2fe1a8401b 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -692,14 +692,6 @@ static __inline__ void inet_reset_saddr(struct sock *s= k) =20 #endif =20 -#if IS_MODULE(CONFIG_IPV6) -#define EXPORT_IPV6_MOD(X) EXPORT_SYMBOL(X) -#define EXPORT_IPV6_MOD_GPL(X) EXPORT_SYMBOL_GPL(X) -#else -#define EXPORT_IPV6_MOD(X) -#define EXPORT_IPV6_MOD_GPL(X) -#endif - static inline unsigned int ipv4_addr_hash(__be32 ip) { return (__force unsigned int) ip; diff --git a/net/core/dev.c b/net/core/dev.c index 200d44883fc1..f2c1c7007c6b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1182,7 +1182,6 @@ void netdev_copy_name(struct net_device *dev, char *n= ame) strscpy(name, dev->name, IFNAMSIZ); } while (read_seqretry(&netdev_rename_lock, seq)); } -EXPORT_IPV6_MOD_GPL(netdev_copy_name); =20 /** * netdev_get_name - get a netdevice name, knowing its ifindex. @@ -1312,7 +1311,6 @@ struct net_device *netdev_get_by_flags_rcu(struct net= *net, netdevice_tracker *t =20 return NULL; } -EXPORT_IPV6_MOD(netdev_get_by_flags_rcu); =20 /** * dev_valid_name - check if name is okay for network device @@ -1838,7 +1836,6 @@ void netif_disable_lro(struct net_device *dev) netdev_unlock_ops(lower_dev); } } -EXPORT_IPV6_MOD(netif_disable_lro); =20 /** * dev_disable_gro_hw - disable HW Generic Receive Offload on a device diff --git a/net/core/hotdata.c b/net/core/hotdata.c index a6db36580817..b0f51a726a3d 100644 --- a/net/core/hotdata.c +++ b/net/core/hotdata.c @@ -27,4 +27,3 @@ struct net_hotdata net_hotdata __cacheline_aligned =3D { EXPORT_SYMBOL(net_hotdata); =20 struct net_aligned_data net_aligned_data; -EXPORT_IPV6_MOD(net_aligned_data); diff --git a/net/core/neighbour.c b/net/core/neighbour.c index c56a4e7bf790..9e12524b67fa 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -778,7 +778,6 @@ struct pneigh_entry *pneigh_lookup(struct neigh_table *= tbl, =20 return NULL; } -EXPORT_IPV6_MOD(pneigh_lookup); =20 int pneigh_create(struct neigh_table *tbl, struct net *net, const void *pkey, struct net_device *dev, diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_soc= k.c index 26e2e792916c..308df5bb4479 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -723,7 +723,6 @@ struct sock *inet_csk_accept(struct sock *sk, struct pr= oto_accept_arg *arg) arg->err =3D error; return NULL; } -EXPORT_IPV6_MOD(inet_csk_accept); =20 /* * Using different timers for retransmit, delayed acks and probes @@ -1035,7 +1034,6 @@ void inet_csk_reqsk_queue_drop_and_put(struct sock *s= k, struct request_sock *req inet_csk_reqsk_queue_drop(sk, req); reqsk_put(req); } -EXPORT_IPV6_MOD(inet_csk_reqsk_queue_drop_and_put); =20 static void reqsk_timer_handler(struct timer_list *t) { diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 13310c72b0bf..3e795547b40c 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -758,7 +758,6 @@ bool inet_ehash_nolisten(struct sock *sk, struct sock *= osk, bool *found_dup_sk) } return ok; } -EXPORT_IPV6_MOD(inet_ehash_nolisten); =20 static int inet_reuseport_add_sock(struct sock *sk, struct inet_listen_hashbucket *ilb) @@ -826,7 +825,6 @@ int inet_hash(struct sock *sk) =20 return err; } -EXPORT_IPV6_MOD(inet_hash); =20 void inet_unhash(struct sock *sk) { @@ -859,7 +857,6 @@ void inet_unhash(struct sock *sk) spin_unlock_bh(lock); } } -EXPORT_IPV6_MOD(inet_unhash); =20 static bool inet_bind2_bucket_match(const struct inet_bind2_bucket *tb, const struct net *net, unsigned short port, @@ -1022,14 +1019,12 @@ int inet_bhash2_update_saddr(struct sock *sk, void = *saddr, int family) { return __inet_bhash2_update_saddr(sk, saddr, family, false); } -EXPORT_IPV6_MOD(inet_bhash2_update_saddr); =20 void inet_bhash2_reset_saddr(struct sock *sk) { if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) __inet_bhash2_update_saddr(sk, NULL, 0, true); } -EXPORT_IPV6_MOD(inet_bhash2_reset_saddr); =20 /* RFC 6056 3.3.4. Algorithm 4: Double-Hash Port Selection Algorithm * Note that we use 32bit integers (vs RFC 'short integers') diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 9fa396d5f09f..d8083b9033c2 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c @@ -59,7 +59,6 @@ void inet_peer_base_init(struct inet_peer_base *bp) seqlock_init(&bp->lock); bp->total =3D 0; } -EXPORT_IPV6_MOD_GPL(inet_peer_base_init); =20 #define PEER_MAX_GC 32 =20 @@ -217,7 +216,6 @@ struct inet_peer *inet_getpeer(struct inet_peer_base *b= ase, =20 return p; } -EXPORT_IPV6_MOD_GPL(inet_getpeer); =20 void inet_putpeer(struct inet_peer *p) { @@ -268,7 +266,6 @@ bool inet_peer_xrlim_allow(struct inet_peer *peer, int = timeout) WRITE_ONCE(peer->rate_tokens, token); return rc; } -EXPORT_IPV6_MOD(inet_peer_xrlim_allow); =20 void inetpeer_invalidate_tree(struct inet_peer_base *base) { @@ -285,4 +282,3 @@ void inetpeer_invalidate_tree(struct inet_peer_base *ba= se) =20 base->total =3D 0; } -EXPORT_IPV6_MOD(inetpeer_invalidate_tree); diff --git a/net/ipv4/metrics.c b/net/ipv4/metrics.c index c1463add48c4..ad40762a8b38 100644 --- a/net/ipv4/metrics.c +++ b/net/ipv4/metrics.c @@ -88,4 +88,3 @@ struct dst_metrics *ip_fib_metrics_init(struct nlattr *fc= _mx, =20 return fib_metrics; } -EXPORT_IPV6_MOD_GPL(ip_fib_metrics_init); diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index 92ab0e0f6f71..bda245c80893 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -56,7 +56,6 @@ struct ping_table { =20 static struct ping_table ping_table; struct pingv6_ops pingv6_ops; -EXPORT_IPV6_MOD_GPL(pingv6_ops); =20 static inline u32 ping_hashfn(const struct net *net, u32 num, u32 mask) { @@ -139,7 +138,6 @@ int ping_get_port(struct sock *sk, unsigned short ident) spin_unlock(&ping_table.lock); return -EADDRINUSE; } -EXPORT_IPV6_MOD_GPL(ping_get_port); =20 void ping_unhash(struct sock *sk) { @@ -154,7 +152,6 @@ void ping_unhash(struct sock *sk) } spin_unlock(&ping_table.lock); } -EXPORT_IPV6_MOD_GPL(ping_unhash); =20 /* Called under rcu_read_lock() */ static struct sock *ping_lookup(struct net *net, struct sk_buff *skb, u16 = ident) @@ -278,7 +275,6 @@ int ping_init_sock(struct sock *sk) put_group_info(group_info); return ret; } -EXPORT_IPV6_MOD_GPL(ping_init_sock); =20 void ping_close(struct sock *sk, long timeout) { @@ -288,7 +284,6 @@ void ping_close(struct sock *sk, long timeout) =20 sk_common_release(sk); } -EXPORT_IPV6_MOD_GPL(ping_close); =20 static int ping_pre_connect(struct sock *sk, struct sockaddr_unsized *uadd= r, int addr_len) @@ -468,7 +463,6 @@ int ping_bind(struct sock *sk, struct sockaddr_unsized = *uaddr, int addr_len) pr_debug("ping_v4_bind -> %d\n", err); return err; } -EXPORT_IPV6_MOD_GPL(ping_bind); =20 /* * Is this a supported type of ICMP message? @@ -601,7 +595,6 @@ void ping_err(struct sk_buff *skb, int offset, u32 info) out: return; } -EXPORT_IPV6_MOD_GPL(ping_err); =20 /* * Copy and checksum an ICMP Echo packet from user space into a buffer @@ -631,7 +624,6 @@ int ping_getfrag(void *from, char *to, =20 return 0; } -EXPORT_IPV6_MOD_GPL(ping_getfrag); =20 static int ping_v4_push_pending_frames(struct sock *sk, struct pingfakehdr= *pfh, struct flowi4 *fl4) @@ -692,7 +684,6 @@ int ping_common_sendmsg(int family, struct msghdr *msg,= size_t len, =20 return 0; } -EXPORT_IPV6_MOD_GPL(ping_common_sendmsg); =20 static int ping_v4_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) { @@ -936,7 +927,6 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, s= ize_t len, int flags) pr_debug("ping_recvmsg -> %d\n", err); return err; } -EXPORT_IPV6_MOD_GPL(ping_recvmsg); =20 static enum skb_drop_reason __ping_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) @@ -957,7 +947,6 @@ int ping_queue_rcv_skb(struct sock *sk, struct sk_buff = *skb) { return __ping_queue_rcv_skb(sk, skb) ? -1 : 0; } -EXPORT_IPV6_MOD_GPL(ping_queue_rcv_skb); =20 =20 /* @@ -985,7 +974,6 @@ enum skb_drop_reason ping_rcv(struct sk_buff *skb) kfree_skb_reason(skb, SKB_DROP_REASON_NO_SOCKET); return SKB_DROP_REASON_NO_SOCKET; } -EXPORT_IPV6_MOD_GPL(ping_rcv); =20 struct proto ping_prot =3D { .name =3D "PING", @@ -1007,7 +995,6 @@ struct proto ping_prot =3D { .put_port =3D ping_unhash, .obj_size =3D sizeof(struct inet_sock), }; -EXPORT_IPV6_MOD(ping_prot); =20 #ifdef CONFIG_PROC_FS =20 @@ -1072,7 +1059,6 @@ void *ping_seq_start(struct seq_file *seq, loff_t *po= s, sa_family_t family) =20 return *pos ? ping_get_idx(seq, *pos-1) : SEQ_START_TOKEN; } -EXPORT_IPV6_MOD_GPL(ping_seq_start); =20 static void *ping_v4_seq_start(struct seq_file *seq, loff_t *pos) { @@ -1091,14 +1077,12 @@ void *ping_seq_next(struct seq_file *seq, void *v, = loff_t *pos) ++*pos; return sk; } -EXPORT_IPV6_MOD_GPL(ping_seq_next); =20 void ping_seq_stop(struct seq_file *seq, void *v) __releases(ping_table.lock) { spin_unlock(&ping_table.lock); } -EXPORT_IPV6_MOD_GPL(ping_seq_stop); =20 static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, int bucket) diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c index fc3affd9c801..f1474598d2c8 100644 --- a/net/ipv4/syncookies.c +++ b/net/ipv4/syncookies.c @@ -223,7 +223,6 @@ struct sock *tcp_get_cookie_sock(struct sock *sk, struc= t sk_buff *skb, =20 return NULL; } -EXPORT_IPV6_MOD(tcp_get_cookie_sock); =20 /* * when syncookies are in effect and tcp timestamps are enabled we stored @@ -260,7 +259,6 @@ bool cookie_timestamp_decode(const struct net *net, =20 return READ_ONCE(net->ipv4.sysctl_tcp_window_scaling) !=3D 0; } -EXPORT_IPV6_MOD(cookie_timestamp_decode); =20 static int cookie_tcp_reqsk_init(struct sock *sk, struct sk_buff *skb, struct request_sock *req) @@ -312,7 +310,6 @@ struct request_sock *cookie_bpf_check(struct sock *sk, = struct sk_buff *skb) =20 return req; } -EXPORT_IPV6_MOD_GPL(cookie_bpf_check); #endif =20 struct request_sock *cookie_tcp_reqsk_alloc(const struct request_sock_ops = *ops, @@ -353,7 +350,6 @@ struct request_sock *cookie_tcp_reqsk_alloc(const struc= t request_sock_ops *ops, =20 return req; } -EXPORT_IPV6_MOD_GPL(cookie_tcp_reqsk_alloc); =20 static struct request_sock *cookie_tcp_check(struct net *net, struct sock = *sk, struct sk_buff *skb) diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 516087c622ad..bd2c3c4587e1 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -303,7 +303,6 @@ DEFINE_PER_CPU(u32, tcp_tw_isn); EXPORT_PER_CPU_SYMBOL_GPL(tcp_tw_isn); =20 long sysctl_tcp_mem[3] __read_mostly; -EXPORT_IPV6_MOD(sysctl_tcp_mem); =20 DEFINE_PER_CPU(int, tcp_memory_per_cpu_fw_alloc); EXPORT_PER_CPU_SYMBOL_GPL(tcp_memory_per_cpu_fw_alloc); @@ -317,7 +316,6 @@ EXPORT_SYMBOL(tcp_have_smc); * Current number of TCP sockets. */ struct percpu_counter tcp_sockets_allocated ____cacheline_aligned_in_smp; -EXPORT_IPV6_MOD(tcp_sockets_allocated); =20 /* * Pressure flag: try to collapse. @@ -341,7 +339,6 @@ void tcp_enter_memory_pressure(struct sock *sk) if (!cmpxchg(&tcp_memory_pressure, 0, val)) NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURES); } -EXPORT_IPV6_MOD_GPL(tcp_enter_memory_pressure); =20 void tcp_leave_memory_pressure(struct sock *sk) { @@ -354,7 +351,6 @@ void tcp_leave_memory_pressure(struct sock *sk) NET_ADD_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURESCHRONO, jiffies_to_msecs(jiffies - val)); } -EXPORT_IPV6_MOD_GPL(tcp_leave_memory_pressure); =20 /* Convert seconds to retransmits based on initial and max timeout */ static u8 secs_to_retrans(int seconds, int timeout, int rto_max) @@ -418,7 +414,6 @@ void tcp_md5_destruct_sock(struct sock *sk) static_branch_slow_dec_deferred(&tcp_md5_needed); } } -EXPORT_IPV6_MOD_GPL(tcp_md5_destruct_sock); #endif =20 /* Address-family independent initialization for a tcp_sock. @@ -486,7 +481,6 @@ void tcp_init_sock(struct sock *sk) sk_sockets_allocated_inc(sk); xa_init_flags(&sk->sk_user_frags, XA_FLAGS_ALLOC1); } -EXPORT_IPV6_MOD(tcp_init_sock); =20 static void tcp_tx_timestamp(struct sock *sk, struct sockcm_cookie *sockc) { @@ -691,7 +685,6 @@ int tcp_ioctl(struct sock *sk, int cmd, int *karg) *karg =3D answ; return 0; } -EXPORT_IPV6_MOD(tcp_ioctl); =20 void tcp_mark_push(struct tcp_sock *tp, struct sk_buff *skb) { @@ -908,7 +901,6 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *pp= os, =20 return ret; } -EXPORT_IPV6_MOD(tcp_splice_read); =20 /* We allow to exceed memory limits for FIN packets to expedite * connection tear down and (memory) recovery. @@ -1483,7 +1475,6 @@ void tcp_splice_eof(struct socket *sock) tcp_push(sk, 0, mss_now, tp->nonagle, size_goal); release_sock(sk); } -EXPORT_IPV6_MOD_GPL(tcp_splice_eof); =20 /* * Handle reading urgent data. BSD has very simple semantics for @@ -1795,7 +1786,6 @@ int tcp_read_skb(struct sock *sk, skb_read_actor_t re= cv_actor) } return copied; } -EXPORT_IPV6_MOD(tcp_read_skb); =20 void tcp_read_done(struct sock *sk, size_t len) { @@ -1840,7 +1830,6 @@ int tcp_peek_len(struct socket *sock) { return tcp_inq(sock->sk); } -EXPORT_IPV6_MOD(tcp_peek_len); =20 /* Make sure sk_rcvbuf is big enough to satisfy SO_RCVLOWAT hint */ int tcp_set_rcvlowat(struct sock *sk, int val) @@ -1870,7 +1859,6 @@ int tcp_set_rcvlowat(struct sock *sk, int val) } return 0; } -EXPORT_IPV6_MOD(tcp_set_rcvlowat); =20 #ifdef CONFIG_MMU static const struct vm_operations_struct tcp_vm_ops =3D { @@ -1889,7 +1877,6 @@ int tcp_mmap(struct file *file, struct socket *sock, vma->vm_ops =3D &tcp_vm_ops; return 0; } -EXPORT_IPV6_MOD(tcp_mmap); =20 static skb_frag_t *skb_advance_to_frag(struct sk_buff *skb, u32 offset_skb, u32 *offset_frag) @@ -2974,7 +2961,6 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, = size_t len, int flags) } return ret; } -EXPORT_IPV6_MOD(tcp_recvmsg); =20 void tcp_set_state(struct sock *sk, int state) { @@ -3104,7 +3090,6 @@ void tcp_shutdown(struct sock *sk, int how) tcp_send_fin(sk); } } -EXPORT_IPV6_MOD(tcp_shutdown); =20 int tcp_orphan_count_sum(void) { @@ -3617,7 +3602,6 @@ static int tcp_repair_options_est(struct sock *sk, so= ckptr_t optbuf, } =20 DEFINE_STATIC_KEY_FALSE(tcp_tx_delay_enabled); -EXPORT_IPV6_MOD(tcp_tx_delay_enabled); =20 static void tcp_enable_tx_delay(struct sock *sk, int val) { @@ -4202,7 +4186,6 @@ int tcp_setsockopt(struct sock *sk, int level, int op= tname, sockptr_t optval, optval, optlen); return do_tcp_setsockopt(sk, level, optname, optval, optlen); } -EXPORT_IPV6_MOD(tcp_setsockopt); =20 static void tcp_get_info_chrono_stats(const struct tcp_sock *tp, struct tcp_info *info) @@ -4865,7 +4848,6 @@ bool tcp_bpf_bypass_getsockopt(int level, int optname) =20 return false; } -EXPORT_IPV6_MOD(tcp_bpf_bypass_getsockopt); =20 int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *o= ptval, int __user *optlen) @@ -4879,7 +4861,6 @@ int tcp_getsockopt(struct sock *sk, int level, int op= tname, char __user *optval, return do_tcp_getsockopt(sk, level, optname, USER_SOCKPTR(optval), USER_SOCKPTR(optlen)); } -EXPORT_IPV6_MOD(tcp_getsockopt); =20 #ifdef CONFIG_TCP_MD5SIG void tcp_md5_hash_skb_data(struct md5_ctx *ctx, const struct sk_buff *skb, @@ -4910,7 +4891,6 @@ void tcp_md5_hash_skb_data(struct md5_ctx *ctx, const= struct sk_buff *skb, skb_walk_frags(skb, frag_iter) tcp_md5_hash_skb_data(ctx, frag_iter, 0); } -EXPORT_IPV6_MOD(tcp_md5_hash_skb_data); =20 void tcp_md5_hash_key(struct md5_ctx *ctx, const struct tcp_md5sig_key *key) @@ -4922,7 +4902,6 @@ void tcp_md5_hash_key(struct md5_ctx *ctx, */ data_race(({ md5_update(ctx, key->key, keylen), 0; })); } -EXPORT_IPV6_MOD(tcp_md5_hash_key); =20 /* Called with rcu_read_lock() */ static enum skb_drop_reason @@ -5023,7 +5002,6 @@ int tcp_do_parse_auth_options(const struct tcphdr *th, } return 0; } -EXPORT_IPV6_MOD(tcp_do_parse_auth_options); #endif =20 /* Called with rcu_read_lock() */ @@ -5092,7 +5070,6 @@ tcp_inbound_hash(struct sock *sk, const struct reques= t_sock *req, return tcp_inbound_md5_hash(sk, skb, saddr, daddr, family, l3index, md5_location); } -EXPORT_IPV6_MOD_GPL(tcp_inbound_hash); =20 void tcp_done(struct sock *sk) { diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c index 4e389d609f91..471c78be5513 100644 --- a/net/ipv4/tcp_fastopen.c +++ b/net/ipv4/tcp_fastopen.c @@ -559,7 +559,6 @@ bool tcp_fastopen_defer_connect(struct sock *sk, int *e= rr) } return false; } -EXPORT_IPV6_MOD(tcp_fastopen_defer_connect); =20 /* * The following code block is to deal with middle box issues with TFO: diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index e6b2f4be7723..7171442c3ed7 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -814,7 +814,6 @@ void tcp_initialize_rcv_mss(struct sock *sk) =20 inet_csk(sk)->icsk_ack.rcv_mss =3D hint; } -EXPORT_IPV6_MOD(tcp_initialize_rcv_mss); =20 /* Receiver "autotuning" code. * @@ -3172,7 +3171,6 @@ void tcp_simple_retransmit(struct sock *sk) */ tcp_non_congestion_loss_retransmit(sk); } -EXPORT_IPV6_MOD(tcp_simple_retransmit); =20 void tcp_enter_recovery(struct sock *sk, bool ece_ack) { @@ -4843,7 +4841,6 @@ void tcp_done_with_error(struct sock *sk, int err) if (!sock_flag(sk, SOCK_DEAD)) sk_error_report(sk); } -EXPORT_IPV6_MOD(tcp_done_with_error); =20 /* When we get a reset we do this. */ void tcp_reset(struct sock *sk, struct sk_buff *skb) @@ -6665,7 +6662,6 @@ void tcp_rcv_established(struct sock *sk, struct sk_b= uff *skb) discard: tcp_drop_reason(sk, skb, reason); } -EXPORT_IPV6_MOD(tcp_rcv_established); =20 void tcp_init_transfer(struct sock *sk, int bpf_op, struct sk_buff *skb) { @@ -7384,7 +7380,6 @@ tcp_rcv_state_process(struct sock *sk, struct sk_buff= *skb) __kfree_skb(skb); return 0; } -EXPORT_IPV6_MOD(tcp_rcv_state_process); =20 static inline void pr_drop_req(struct request_sock *req, __u16 port, int f= amily) { @@ -7582,7 +7577,6 @@ u16 tcp_get_syncookie_mss(struct request_sock_ops *rs= k_ops, =20 return mss; } -EXPORT_IPV6_MOD_GPL(tcp_get_syncookie_mss); =20 int tcp_conn_request(struct request_sock_ops *rsk_ops, const struct tcp_request_sock_ops *af_ops, @@ -7762,4 +7756,3 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops, tcp_listendrop(sk); return 0; } -EXPORT_IPV6_MOD(tcp_conn_request); diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 2ea8253b737a..69ab236072e7 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -201,7 +201,6 @@ int tcp_twsk_unique(struct sock *sk, struct sock *sktw,= void *twp) =20 return 0; } -EXPORT_IPV6_MOD_GPL(tcp_twsk_unique); =20 static int tcp_v4_pre_connect(struct sock *sk, struct sockaddr_unsized *ua= ddr, int addr_len) @@ -362,7 +361,6 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr_uns= ized *uaddr, int addr_len inet->inet_dport =3D 0; return err; } -EXPORT_IPV6_MOD(tcp_v4_connect); =20 /* * This routine reacts to ICMP_FRAG_NEEDED mtu indications as defined in R= FC1191. @@ -402,7 +400,6 @@ void tcp_v4_mtu_reduced(struct sock *sk) tcp_simple_retransmit(sk); } /* else let the usual retransmit timer handle it */ } -EXPORT_IPV6_MOD(tcp_v4_mtu_reduced); =20 static void do_redirect(struct sk_buff *skb, struct sock *sk) { @@ -436,7 +433,6 @@ void tcp_req_err(struct sock *sk, u32 seq, bool abort) } reqsk_put(req); } -EXPORT_IPV6_MOD(tcp_req_err); =20 /* TCP-LD (RFC 6069) logic */ void tcp_ld_RTO_revert(struct sock *sk, u32 seq) @@ -475,7 +471,6 @@ void tcp_ld_RTO_revert(struct sock *sk, u32 seq) tcp_retransmit_timer(sk); } } -EXPORT_IPV6_MOD(tcp_ld_RTO_revert); =20 /* * This routine is called by the ICMP module when it gets some @@ -1222,7 +1217,6 @@ static void tcp_v4_reqsk_destructor(struct request_so= ck *req) */ =20 DEFINE_STATIC_KEY_DEFERRED_FALSE(tcp_md5_needed, HZ); -EXPORT_IPV6_MOD(tcp_md5_needed); =20 static bool better_md5_match(struct tcp_md5sig_key *old, struct tcp_md5sig= _key *new) { @@ -1281,7 +1275,6 @@ struct tcp_md5sig_key *__tcp_md5_do_lookup(const stru= ct sock *sk, int l3index, } return best_match; } -EXPORT_IPV6_MOD(__tcp_md5_do_lookup); =20 static struct tcp_md5sig_key *tcp_md5_do_lookup_exact(const struct sock *s= k, const union tcp_md5_addr *addr, @@ -1328,7 +1321,6 @@ struct tcp_md5sig_key *tcp_v4_md5_lookup(const struct= sock *sk, addr =3D (const union tcp_md5_addr *)&addr_sk->sk_daddr; return tcp_md5_do_lookup(sk, l3index, addr, AF_INET); } -EXPORT_IPV6_MOD(tcp_v4_md5_lookup); =20 static int tcp_md5sig_info_add(struct sock *sk, gfp_t gfp) { @@ -1423,7 +1415,6 @@ int tcp_md5_do_add(struct sock *sk, const union tcp_m= d5_addr *addr, return __tcp_md5_do_add(sk, addr, family, prefixlen, l3index, flags, newkey, newkeylen, GFP_KERNEL); } -EXPORT_IPV6_MOD(tcp_md5_do_add); =20 int tcp_md5_key_copy(struct sock *sk, const union tcp_md5_addr *addr, int family, u8 prefixlen, int l3index, @@ -1451,7 +1442,6 @@ int tcp_md5_key_copy(struct sock *sk, const union tcp= _md5_addr *addr, key->flags, key->key, key->keylen, sk_gfp_mask(sk, GFP_ATOMIC)); } -EXPORT_IPV6_MOD(tcp_md5_key_copy); =20 int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr, int fa= mily, u8 prefixlen, int l3index, u8 flags) @@ -1466,7 +1456,6 @@ int tcp_md5_do_del(struct sock *sk, const union tcp_m= d5_addr *addr, int family, kfree_rcu(key, rcu); return 0; } -EXPORT_IPV6_MOD(tcp_md5_do_del); =20 void tcp_clear_md5_list(struct sock *sk) { @@ -1604,7 +1593,6 @@ tcp_v4_md5_hash_skb(char *md5_hash, const struct tcp_= md5sig_key *key, tcp_md5_hash_key(&ctx, key); md5_final(&ctx, md5_hash); } -EXPORT_IPV6_MOD(tcp_v4_md5_hash_skb); =20 #endif =20 @@ -1674,7 +1662,6 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_bu= ff *skb) tcp_listendrop(sk); return 0; } -EXPORT_IPV6_MOD(tcp_v4_conn_request); =20 =20 /* @@ -1800,7 +1787,6 @@ struct sock *tcp_v4_syn_recv_sock(const struct sock *= sk, struct sk_buff *skb, tcp_done(newsk); goto exit; } -EXPORT_IPV6_MOD(tcp_v4_syn_recv_sock); =20 static struct sock *tcp_v4_cookie_check(struct sock *sk, struct sk_buff *s= kb) { @@ -2055,7 +2041,6 @@ bool tcp_add_backlog(struct sock *sk, struct sk_buff = *skb, } return false; } -EXPORT_IPV6_MOD(tcp_add_backlog); =20 static void tcp_v4_restore_cb(struct sk_buff *skb) { @@ -2367,7 +2352,6 @@ void inet_sk_rx_dst_set(struct sock *sk, const struct= sk_buff *skb) sk->sk_rx_dst_ifindex =3D skb->skb_iif; } } -EXPORT_IPV6_MOD(inet_sk_rx_dst_set); =20 const struct inet_connection_sock_af_ops ipv4_specific =3D { .queue_xmit =3D ip_queue_xmit, @@ -2380,7 +2364,6 @@ const struct inet_connection_sock_af_ops ipv4_specifi= c =3D { .getsockopt =3D ip_getsockopt, .mtu_reduced =3D tcp_v4_mtu_reduced, }; -EXPORT_IPV6_MOD(ipv4_specific); =20 #if defined(CONFIG_TCP_MD5SIG) || defined(CONFIG_TCP_AO) static const struct tcp_sock_af_ops tcp_sock_ipv4_specific =3D { @@ -2473,7 +2456,6 @@ void tcp_v4_destroy_sock(struct sock *sk) =20 sk_sockets_allocated_dec(sk); } -EXPORT_IPV6_MOD(tcp_v4_destroy_sock); =20 #ifdef CONFIG_PROC_FS /* Proc filesystem TCP sock list dumping. */ @@ -2709,7 +2691,6 @@ void *tcp_seq_start(struct seq_file *seq, loff_t *pos) st->last_pos =3D *pos; return rc; } -EXPORT_IPV6_MOD(tcp_seq_start); =20 void *tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos) { @@ -2740,7 +2721,6 @@ void *tcp_seq_next(struct seq_file *seq, void *v, lof= f_t *pos) st->last_pos =3D *pos; return rc; } -EXPORT_IPV6_MOD(tcp_seq_next); =20 void tcp_seq_stop(struct seq_file *seq, void *v) { @@ -2758,7 +2738,6 @@ void tcp_seq_stop(struct seq_file *seq, void *v) break; } } -EXPORT_IPV6_MOD(tcp_seq_stop); =20 static void get_openreq4(const struct request_sock *req, struct seq_file *f, int i) diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index d350d794a959..199f0b579e89 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c @@ -287,7 +287,6 @@ tcp_timewait_state_process(struct inet_timewait_sock *t= w, struct sk_buff *skb, inet_twsk_put(tw); return TCP_TW_SUCCESS; } -EXPORT_IPV6_MOD(tcp_timewait_state_process); =20 static void tcp_time_wait_init(struct sock *sk, struct tcp_timewait_sock *= tcptw) { @@ -523,7 +522,6 @@ void tcp_ca_openreq_child(struct sock *sk, const struct= dst_entry *dst) =20 tcp_set_ca_state(sk, TCP_CA_Open); } -EXPORT_IPV6_MOD_GPL(tcp_ca_openreq_child); =20 static void smc_check_reset_syn_req(const struct tcp_sock *oldtp, struct request_sock *req, @@ -976,7 +974,6 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_b= uff *skb, } return NULL; } -EXPORT_IPV6_MOD(tcp_check_req); =20 /* * Queue segment on the new socket if the new socket is active, @@ -1018,4 +1015,3 @@ enum skb_drop_reason tcp_child_process(struct sock *p= arent, struct sock *child, sock_put(child); return reason; } -EXPORT_IPV6_MOD(tcp_child_process); diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 35c3b0ab5a0c..8e99687526a6 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -272,7 +272,6 @@ void tcp_select_initial_window(const struct sock *sk, i= nt __space, __u32 mss, WRITE_ONCE(*__window_clamp, min_t(__u32, U16_MAX << (*rcv_wscale), window_clamp)); } -EXPORT_IPV6_MOD(tcp_select_initial_window); =20 /* Chose a new window to advertise, update state in tcp_sock for the * socket, and return result with RFC1323 scaling applied. The return @@ -1361,7 +1360,6 @@ void tcp_release_cb(struct sock *sk) if ((flags & TCPF_ACK_DEFERRED) && inet_csk_ack_scheduled(sk)) tcp_send_ack(sk); } -EXPORT_IPV6_MOD(tcp_release_cb); =20 void __init tcp_tsq_work_init(void) { @@ -2023,7 +2021,6 @@ int tcp_mtu_to_mss(struct sock *sk, int pmtu) return __tcp_mtu_to_mss(sk, pmtu) - (tcp_sk(sk)->tcp_header_len - sizeof(struct tcphdr)); } -EXPORT_IPV6_MOD(tcp_mtu_to_mss); =20 /* Inverse of above */ int tcp_mss_to_mtu(struct sock *sk, int mss) @@ -2096,7 +2093,6 @@ unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu) =20 return mss_now; } -EXPORT_IPV6_MOD(tcp_sync_mss); =20 /* Compute the current effective MSS, taking SACKs and IP options, * and even PMTU discovery events into account. @@ -4077,7 +4073,6 @@ struct sk_buff *tcp_make_synack(const struct sock *sk= , struct dst_entry *dst, =20 return skb; } -EXPORT_IPV6_MOD(tcp_make_synack); =20 static void tcp_ca_dst_init(struct sock *sk, const struct dst_entry *dst) { @@ -4658,4 +4653,3 @@ int tcp_rtx_synack(const struct sock *sk, struct requ= est_sock *req) } return res; } -EXPORT_IPV6_MOD(tcp_rtx_synack); diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index 5a14a53a3c9e..ea99988795e7 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -774,7 +774,6 @@ void tcp_set_keepalive(struct sock *sk, int val) else if (!val) tcp_delete_keepalive_timer(sk); } -EXPORT_IPV6_MOD_GPL(tcp_set_keepalive); =20 static void tcp_keepalive_timer(struct timer_list *t) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 7e3f9fd9de19..2cc6d059b692 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -126,7 +126,6 @@ struct udp_table udp_table __read_mostly; =20 long sysctl_udp_mem[3] __read_mostly; -EXPORT_IPV6_MOD(sysctl_udp_mem); =20 DEFINE_PER_CPU(int, udp_memory_per_cpu_fw_alloc); EXPORT_PER_CPU_SYMBOL_GPL(udp_memory_per_cpu_fw_alloc); @@ -349,7 +348,6 @@ int udp_lib_get_port(struct sock *sk, unsigned short sn= um, fail: return error; } -EXPORT_IPV6_MOD(udp_lib_get_port); =20 static int udp_v4_get_port(struct sock *sk, unsigned short snum) { @@ -415,7 +413,6 @@ u32 udp_ehashfn(const struct net *net, const __be32 lad= dr, const __u16 lport, return __inet_ehashfn(laddr, lport, faddr, fport, udp_ehash_secret + net_hash_mix(net)); } -EXPORT_IPV6_MOD(udp_ehashfn); =20 /** * udp4_lib_lookup1() - Simplified lookup using primary hash (destination = port) @@ -650,7 +647,6 @@ void udp_lib_hash4(struct sock *sk, u16 hash) =20 spin_unlock_bh(&hslot->lock); } -EXPORT_IPV6_MOD(udp_lib_hash4); =20 /* call with sock lock */ void udp4_hash4(struct sock *sk) @@ -666,7 +662,6 @@ void udp4_hash4(struct sock *sk) =20 udp_lib_hash4(sk, hash); } -EXPORT_IPV6_MOD(udp4_hash4); #endif /* CONFIG_BASE_SMALL */ =20 /* UDP is nearly always wildcards out the wazoo, it makes no sense to try @@ -802,11 +797,9 @@ static inline bool __udp_is_mcast_sock(struct net *net= , const struct sock *sk, } =20 DEFINE_STATIC_KEY_FALSE(udp_encap_needed_key); -EXPORT_IPV6_MOD(udp_encap_needed_key); =20 #if IS_ENABLED(CONFIG_IPV6) DEFINE_STATIC_KEY_FALSE(udpv6_encap_needed_key); -EXPORT_IPV6_MOD(udpv6_encap_needed_key); #endif =20 void udp_encap_enable(void) @@ -1026,7 +1019,6 @@ void udp_flush_pending_frames(struct sock *sk) ip_flush_pending_frames(sk); } } -EXPORT_IPV6_MOD(udp_flush_pending_frames); =20 /** * udp4_hwcsum - handle outgoing HW checksumming @@ -1204,7 +1196,6 @@ int udp_push_pending_frames(struct sock *sk) WRITE_ONCE(up->pending, 0); return err; } -EXPORT_IPV6_MOD(udp_push_pending_frames); =20 static int __udp_cmsg_send(struct cmsghdr *cmsg, u16 *gso_size) { @@ -1241,7 +1232,6 @@ int udp_cmsg_send(struct sock *sk, struct msghdr *msg= , u16 *gso_size) =20 return need_ip; } -EXPORT_IPV6_MOD_GPL(udp_cmsg_send); =20 int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) { @@ -1532,7 +1522,6 @@ void udp_splice_eof(struct socket *sock) udp_push_pending_frames(sk); release_sock(sk); } -EXPORT_IPV6_MOD_GPL(udp_splice_eof); =20 #define UDP_SKB_IS_STATELESS 0x80000000 =20 @@ -1647,7 +1636,6 @@ void udp_skb_destructor(struct sock *sk, struct sk_bu= ff *skb) prefetch(&skb->data); udp_rmem_release(sk, udp_skb_truesize(skb), 1, false); } -EXPORT_IPV6_MOD(udp_skb_destructor); =20 /* as above, but the caller held the rx queue lock, too */ static void udp_skb_dtor_locked(struct sock *sk, struct sk_buff *skb) @@ -1800,7 +1788,6 @@ int __udp_enqueue_schedule_skb(struct sock *sk, struc= t sk_buff *skb) udp_drops_inc(sk); return err; } -EXPORT_IPV6_MOD_GPL(__udp_enqueue_schedule_skb); =20 void udp_destruct_common(struct sock *sk) { @@ -1817,7 +1804,6 @@ void udp_destruct_common(struct sock *sk) udp_rmem_release(sk, total, 0, true); kfree(up->udp_prod_queue); } -EXPORT_IPV6_MOD_GPL(udp_destruct_common); =20 static void udp_destruct_sock(struct sock *sk) { @@ -1855,7 +1841,6 @@ void skb_consume_udp(struct sock *sk, struct sk_buff = *skb, int len) skb_release_head_state(skb); __consume_stateless_skb(skb); } -EXPORT_IPV6_MOD_GPL(skb_consume_udp); =20 static struct sk_buff *__first_packet_length(struct sock *sk, struct sk_buff_head *rcvq, @@ -1937,7 +1922,6 @@ int udp_ioctl(struct sock *sk, int cmd, int *karg) =20 return 0; } -EXPORT_IPV6_MOD(udp_ioctl); =20 struct sk_buff *__skb_recv_udp(struct sock *sk, unsigned int flags, int *off, int *err) @@ -2032,7 +2016,6 @@ int udp_read_skb(struct sock *sk, skb_read_actor_t re= cv_actor) WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk)); return recv_actor(sk, skb); } -EXPORT_IPV6_MOD(udp_read_skb); =20 /* * This should be easy, if there is something there we @@ -2154,7 +2137,6 @@ int udp_pre_connect(struct sock *sk, struct sockaddr_= unsized *uaddr, =20 return BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK(sk, uaddr, &addr_len); } -EXPORT_IPV6_MOD(udp_pre_connect); =20 static int udp_connect(struct sock *sk, struct sockaddr_unsized *uaddr, int addr_len) @@ -2204,7 +2186,6 @@ int udp_disconnect(struct sock *sk, int flags) release_sock(sk); return 0; } -EXPORT_IPV6_MOD(udp_disconnect); =20 void udp_lib_unhash(struct sock *sk) { @@ -2236,7 +2217,6 @@ void udp_lib_unhash(struct sock *sk) spin_unlock_bh(&hslot->lock); } } -EXPORT_IPV6_MOD(udp_lib_unhash); =20 /* * inet_rcv_saddr was changed, we must rehash secondary hash @@ -2306,7 +2286,6 @@ void udp_lib_rehash(struct sock *sk, u16 newhash, u16= newhash4) udp_sk(sk)->udp_portaddr_hash =3D newhash; } } -EXPORT_IPV6_MOD(udp_lib_rehash); =20 static void udp_v4_rehash(struct sock *sk) { @@ -2470,7 +2449,6 @@ bool udp_sk_rx_dst_set(struct sock *sk, struct dst_en= try *dst) } return false; } -EXPORT_IPV6_MOD(udp_sk_rx_dst_set); =20 /* * Multicasts and broadcasts go to each listener. @@ -2999,7 +2977,6 @@ int udp_lib_setsockopt(struct sock *sk, int level, in= t optname, =20 return err; } -EXPORT_IPV6_MOD(udp_lib_setsockopt); =20 static int udp_setsockopt(struct sock *sk, int level, int optname, sockptr= _t optval, unsigned int optlen) @@ -3060,7 +3037,6 @@ int udp_lib_getsockopt(struct sock *sk, int level, in= t optname, return -EFAULT; return 0; } -EXPORT_IPV6_MOD(udp_lib_getsockopt); =20 static int udp_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen) @@ -3102,7 +3078,6 @@ __poll_t udp_poll(struct file *file, struct socket *s= ock, poll_table *wait) return mask; =20 } -EXPORT_IPV6_MOD(udp_poll); =20 int udp_abort(struct sock *sk, int err) { @@ -3125,7 +3100,6 @@ int udp_abort(struct sock *sk, int err) =20 return 0; } -EXPORT_IPV6_MOD_GPL(udp_abort); =20 struct proto udp_prot =3D { .name =3D "UDP", @@ -3245,7 +3219,6 @@ void *udp_seq_start(struct seq_file *seq, loff_t *pos) =20 return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN; } -EXPORT_IPV6_MOD(udp_seq_start); =20 void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos) { @@ -3259,7 +3232,6 @@ void *udp_seq_next(struct seq_file *seq, void *v, lof= f_t *pos) ++*pos; return sk; } -EXPORT_IPV6_MOD(udp_seq_next); =20 void udp_seq_stop(struct seq_file *seq, void *v) { @@ -3271,7 +3243,6 @@ void udp_seq_stop(struct seq_file *seq, void *v) if (state->bucket <=3D udptable->mask) spin_unlock_bh(&udptable->hash[state->bucket].lock); } -EXPORT_IPV6_MOD(udp_seq_stop); =20 /* -----------------------------------------------------------------------= - */ static void udp4_format_sock(struct sock *sp, struct seq_file *f, diff --git a/net/psp/psp_sock.c b/net/psp/psp_sock.c index a85b0ed88842..07dc4cf741f3 100644 --- a/net/psp/psp_sock.c +++ b/net/psp/psp_sock.c @@ -291,4 +291,3 @@ void psp_reply_set_decrypted(const struct sock *sk, str= uct sk_buff *skb) skb->decrypted =3D 1; rcu_read_unlock(); } -EXPORT_IPV6_MOD_GPL(psp_reply_set_decrypted); --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CE7D3D524D for ; Wed, 25 Mar 2026 12:10:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440648; cv=none; b=OcSKweYI58ZlL5bZAiD5rl+DUtQSNDz0Epcfoi5t3SaylF1zzo/5lfLtQmujaYaJsbFJVNchb6hvVYxXubFixw6UK0LuwB7syWmDYzQHH2VWv4dxNGzHyva7398eaC5G0Ll0RD5V27uYejNZyFucJUw+MRg2RQD7aFe6siy+wIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440648; c=relaxed/simple; bh=Ten+6IkaaETQo9Udy6kslz2UwxLrOUupSZs39l8WPfE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fpNvqhdXLc/7g3LCnw5sl2CeVNo9+ARQZzbIYs2mYqieNL8zbXFMhgy+JZWzR0wZy9itMdWLjWn4dFd2dgSowo+TzKP3wrsqDLSeb0o54fbdeBNyd6ph0wK5hkok/GwxFCUg9vTamOAMt1Qh93svrEp5IyoNN7m3vHmXMNc/wHo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 8413A5BCD0; Wed, 25 Mar 2026 12:10:40 +0000 (UTC) Authentication-Results: smtp-out2.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3B6B7443BD; Wed, 25 Mar 2026 12:10:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id MGWRC7/Qw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:10:39 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH 03/11 net-next v5] ipv6: replace IS_BUILTIN(CONFIG_IPV6) with IS_ENABLED(CONFIG_IPV6) Date: Wed, 25 Mar 2026 13:08:44 +0100 Message-ID: <20260325120928.15848-4-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 8413A5BCD0 X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Spam-Score: -4.00 X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[]; TAGGED_RCPT(0.00)[] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org As IPv6 is built-in only, it does not make sense to continue using IS_BUILTIN(CONFIG_IPV6). Therefore, replace it with IS_ENABLED() when necessary and drop it if it isn't valid anymore. Notice that there is still one instance related to ICMPv6, as it requires more changes it will be handle separately. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re Acked-by: Martin KaFai Lau --- include/linux/indirect_call_wrapper.h | 2 +- include/net/ip6_fib.h | 2 +- net/core/filter.c | 14 +++++++------- net/ipv6/ip6_fib.c | 2 +- net/ipv6/ip6_offload.c | 4 ++-- net/ipv6/route.c | 6 ------ 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/include/linux/indirect_call_wrapper.h b/include/linux/indirect= _call_wrapper.h index dc272b514a01..0e4340ecd857 100644 --- a/include/linux/indirect_call_wrapper.h +++ b/include/linux/indirect_call_wrapper.h @@ -57,7 +57,7 @@ * builtin, this macro simplify dealing with indirect calls with only ipv4= /ipv6 * alternatives */ -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) #define INDIRECT_CALL_INET(f, f2, f1, ...) \ INDIRECT_CALL_2(f, f2, f1, __VA_ARGS__) #elif IS_ENABLED(CONFIG_INET) diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 88b0dd4d8e09..39c98c3d8ac5 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -580,7 +580,7 @@ static inline bool fib6_metric_locked(struct fib6_info = *f6i, int metric) void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i, bool offload, bool trap, bool offload_failed); =20 -#if IS_BUILTIN(CONFIG_IPV6) && defined(CONFIG_BPF_SYSCALL) +#if IS_ENABLED(CONFIG_IPV6) && defined(CONFIG_BPF_SYSCALL) struct bpf_iter__ipv6_route { __bpf_md_ptr(struct bpf_iter_meta *, meta); __bpf_md_ptr(struct fib6_info *, rt); diff --git a/net/core/filter.c b/net/core/filter.c index 2f023999f046..c56821afaa0f 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -7590,7 +7590,7 @@ BPF_CALL_5(bpf_tcp_check_syncookie, struct sock *, sk= , void *, iph, u32, iph_len ret =3D __cookie_v4_check((struct iphdr *)iph, th); break; =20 -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) case 6: if (unlikely(iph_len < sizeof(struct ipv6hdr))) return -EINVAL; @@ -7660,7 +7660,7 @@ BPF_CALL_5(bpf_tcp_gen_syncookie, struct sock *, sk, = void *, iph, u32, iph_len, mss =3D tcp_v4_get_syncookie(sk, iph, th, &cookie); break; =20 -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) case 6: if (unlikely(iph_len < sizeof(struct ipv6hdr))) return -EINVAL; @@ -8026,7 +8026,7 @@ static const struct bpf_func_proto bpf_tcp_raw_gen_sy= ncookie_ipv4_proto =3D { BPF_CALL_3(bpf_tcp_raw_gen_syncookie_ipv6, struct ipv6hdr *, iph, struct tcphdr *, th, u32, th_len) { -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) const u16 mss_clamp =3D IPV6_MIN_MTU - sizeof(struct tcphdr) - sizeof(struct ipv6hdr); u32 cookie; @@ -8078,7 +8078,7 @@ static const struct bpf_func_proto bpf_tcp_raw_check_= syncookie_ipv4_proto =3D { BPF_CALL_2(bpf_tcp_raw_check_syncookie_ipv6, struct ipv6hdr *, iph, struct tcphdr *, th) { -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) if (__cookie_v6_check(iph, th) > 0) return 0; =20 @@ -11964,7 +11964,7 @@ BPF_CALL_1(bpf_skc_to_tcp_timewait_sock, struct soc= k *, sk) return (unsigned long)sk; #endif =20 -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) if (sk && sk->sk_prot =3D=3D &tcpv6_prot && sk->sk_state =3D=3D TCP_TIME_= WAIT) return (unsigned long)sk; #endif @@ -11987,7 +11987,7 @@ BPF_CALL_1(bpf_skc_to_tcp_request_sock, struct sock= *, sk) return (unsigned long)sk; #endif =20 -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) if (sk && sk->sk_prot =3D=3D &tcpv6_prot && sk->sk_state =3D=3D TCP_NEW_S= YN_RECV) return (unsigned long)sk; #endif @@ -12250,7 +12250,7 @@ __bpf_kfunc int bpf_sk_assign_tcp_reqsk(struct __sk= _buff *s, struct sock *sk, ops =3D &tcp_request_sock_ops; min_mss =3D 536; break; -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) case htons(ETH_P_IPV6): ops =3D &tcp6_request_sock_ops; min_mss =3D IPV6_MIN_MTU - 60; diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index a6e58a435735..a935004ec9df 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -2763,7 +2763,7 @@ static void ipv6_route_native_seq_stop(struct seq_fil= e *seq, void *v) rcu_read_unlock(); } =20 -#if IS_BUILTIN(CONFIG_IPV6) && defined(CONFIG_BPF_SYSCALL) +#if defined(CONFIG_BPF_SYSCALL) static int ipv6_route_prog_seq_show(struct bpf_prog *prog, struct bpf_iter_meta *meta, void *v) diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c index bd7f780e37a5..d8072ad6b8c4 100644 --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c @@ -286,7 +286,7 @@ INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receiv= e(struct list_head *head, =20 if (likely(proto =3D=3D IPPROTO_TCP)) pp =3D tcp6_gro_receive(head, skb); -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) else if (likely(proto =3D=3D IPPROTO_UDP)) pp =3D udp6_gro_receive(head, skb); #endif @@ -346,7 +346,7 @@ INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk= _buff *skb, int nhoff) =20 if (likely(ops =3D=3D &net_hotdata.tcpv6_offload)) return tcp6_gro_complete(skb, nhoff); -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) if (ops =3D=3D &net_hotdata.udpv6_offload) return udp6_gro_complete(skb, nhoff); #endif diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 08cd86f49bf9..781b43c54932 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -6826,7 +6826,6 @@ void __init ip6_route_init_special_entries(void) #endif } =20 -#if IS_BUILTIN(CONFIG_IPV6) #if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS) DEFINE_BPF_ITER_FUNC(ipv6_route, struct bpf_iter_meta *meta, struct fib6_i= nfo *rt) =20 @@ -6860,7 +6859,6 @@ static void bpf_iter_unregister(void) bpf_iter_unreg_target(&ipv6_route_reg_info); } #endif -#endif =20 static const struct rtnl_msg_handler ip6_route_rtnl_msg_handlers[] __initc= onst_or_module =3D { {.owner =3D THIS_MODULE, .protocol =3D PF_INET6, .msgtype =3D RTM_NEWROUT= E, @@ -6921,12 +6919,10 @@ int __init ip6_route_init(void) if (ret) goto out_register_late_subsys; =20 -#if IS_BUILTIN(CONFIG_IPV6) #if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS) ret =3D bpf_iter_register(); if (ret) goto out_register_late_subsys; -#endif #endif =20 for_each_possible_cpu(cpu) { @@ -6961,10 +6957,8 @@ int __init ip6_route_init(void) =20 void ip6_route_cleanup(void) { -#if IS_BUILTIN(CONFIG_IPV6) #if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS) bpf_iter_unregister(); -#endif #endif unregister_netdevice_notifier(&ip6_route_dev_notifier); unregister_pernet_subsys(&ip6_route_net_late_ops); --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15D933D5656 for ; Wed, 25 Mar 2026 12:10:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440647; cv=none; b=cJ+FiW3283+Z99ywFXO/5ct11G9KqSoMGkG3R1SnUVq98EITUvfIj/QDll2ScaoQhwWwcftsgLlitOHDox5K6BY4xNESdsX4okJ0BSzy/gz1K9PO4oW5cxut7XDsMb8REQqkoOi6DJ1CNsc2yX+Mp5wpq8UKWeuRridBbE+Julw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440647; c=relaxed/simple; bh=OI/6dH34Dkx0vf1OTyKvpqCNnQL2h50RJNt88vxvq8k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GNiBvo89aMs4EqUK0LJ3P/KJLQ71BoH2n60xUBUXq5BkbkqUocPT541WhWmhXtYj38aEYvXdtVFRnOMxHubliTBo1X5Uxxy5tQY1NpqQNldnPH7iczB1rk9ZWInlTY30sCmv/vTHtps5L1QLGXJw212ON7g7/vCcSGvR22FWaqI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=QGK/ugS5; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=wXYOeApM; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=QGK/ugS5; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=wXYOeApM; arc=none smtp.client-ip=195.135.223.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="QGK/ugS5"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="wXYOeApM"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="QGK/ugS5"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="wXYOeApM" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5D7C74D22F; Wed, 25 Mar 2026 12:10:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440643; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pYpLSZag5yeJIgKi/czl86lnaiHJOvkNlD/Duzj/IiA=; b=QGK/ugS5EJVv6k3wQSxSNH4PybeA1YiRSAZGboAXz1+nvGiizQuEjpzC9OUZSjAcv0k8Uv iPuXEnp3/dhyGXEiSah/ixAptPro4ClY8XDXDczZdos7lAfRzKz+idRQONXfkfzHWk2Sd0 N3TfrLuJCMEFqvpOCVDHjl4GH8T3CwI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440643; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pYpLSZag5yeJIgKi/czl86lnaiHJOvkNlD/Duzj/IiA=; b=wXYOeApMMC55RNVKWb+HtP7fHvuYDHFbg3Q4HVX+EGz3mI3gBKmWPBI7PpVWvubF/u2SRq 3ZS0hTTaFISTaNBg== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440643; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pYpLSZag5yeJIgKi/czl86lnaiHJOvkNlD/Duzj/IiA=; b=QGK/ugS5EJVv6k3wQSxSNH4PybeA1YiRSAZGboAXz1+nvGiizQuEjpzC9OUZSjAcv0k8Uv iPuXEnp3/dhyGXEiSah/ixAptPro4ClY8XDXDczZdos7lAfRzKz+idRQONXfkfzHWk2Sd0 N3TfrLuJCMEFqvpOCVDHjl4GH8T3CwI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440643; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pYpLSZag5yeJIgKi/czl86lnaiHJOvkNlD/Duzj/IiA=; b=wXYOeApMMC55RNVKWb+HtP7fHvuYDHFbg3Q4HVX+EGz3mI3gBKmWPBI7PpVWvubF/u2SRq 3ZS0hTTaFISTaNBg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B88EA443BF; Wed, 25 Mar 2026 12:10:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 8BT0KcLQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:10:42 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , linux-kernel@vger.kernel.org Subject: [PATCH 04/11 net-next v5] ipv6: remove dynamic ICMPv6 sender registration infrastructure Date: Wed, 25 Mar 2026 13:08:45 +0100 Message-ID: <20260325120928.15848-5-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-7.30 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_SEVEN(0.00)[10]; RCVD_TLS_ALL(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email,suse.de:mid,suse.de:email] X-Spam-Flag: NO X-Spam-Score: -7.30 X-Spam-Level: As IPv6 is built-in only, there is no need to maintain the sender registration infrastructure used to allow built-in subsystems to send ICMPv6 messages when IPv6 was compiled as a module. Drop the registration mechanism and the __icmpv6_send() sender implementation. While icmpv6_send() users could be converted to icmp6_send() that doesn't seems necessary as none of them are using the force_saddr parameter. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- include/linux/icmpv6.h | 29 ++------------------------ net/ipv6/icmp.c | 6 ------ net/ipv6/ip6_icmp.c | 46 +++--------------------------------------- 3 files changed, 5 insertions(+), 76 deletions(-) diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h index e3b3b0fa2a8f..2bd9f2157e6c 100644 --- a/include/linux/icmpv6.h +++ b/include/linux/icmpv6.h @@ -15,38 +15,13 @@ static inline struct icmp6hdr *icmp6_hdr(const struct s= k_buff *skb) =20 #if IS_ENABLED(CONFIG_IPV6) =20 -typedef void ip6_icmp_send_t(struct sk_buff *skb, u8 type, u8 code, __u32 = info, - const struct in6_addr *force_saddr, - const struct inet6_skb_parm *parm); void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, const struct in6_addr *force_saddr, const struct inet6_skb_parm *parm); -#if IS_BUILTIN(CONFIG_IPV6) -static inline void __icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __= u32 info, - const struct inet6_skb_parm *parm) -{ - icmp6_send(skb, type, code, info, NULL, parm); -} -static inline int inet6_register_icmp_sender(ip6_icmp_send_t *fn) -{ - BUILD_BUG_ON(fn !=3D icmp6_send); - return 0; -} -static inline int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn) -{ - BUILD_BUG_ON(fn !=3D icmp6_send); - return 0; -} -#else -extern void __icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 inf= o, - const struct inet6_skb_parm *parm); -extern int inet6_register_icmp_sender(ip6_icmp_send_t *fn); -extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); -#endif =20 static inline void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u3= 2 info) { - __icmpv6_send(skb, type, code, info, IP6CB(skb)); + icmp6_send(skb, type, code, info, NULL, IP6CB(skb)); } =20 int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, @@ -58,7 +33,7 @@ void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 = code, __u32 info); static inline void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 cod= e, __u32 info) { struct inet6_skb_parm parm =3D { 0 }; - __icmpv6_send(skb_in, type, code, info, &parm); + icmp6_send(skb_in, type, code, info, NULL, &parm); } #endif =20 diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 813d2e9edb8b..8e8d7bd84a4c 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -1288,13 +1288,8 @@ int __init icmpv6_init(void) if (inet6_add_protocol(&icmpv6_protocol, IPPROTO_ICMPV6) < 0) goto fail; =20 - err =3D inet6_register_icmp_sender(icmp6_send); - if (err) - goto sender_reg_err; return 0; =20 -sender_reg_err: - inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6); fail: pr_err("Failed to register ICMP6 protocol\n"); return err; @@ -1302,7 +1297,6 @@ int __init icmpv6_init(void) =20 void icmpv6_cleanup(void) { - inet6_unregister_icmp_sender(icmp6_send); inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6); } =20 diff --git a/net/ipv6/ip6_icmp.c b/net/ipv6/ip6_icmp.c index 233914b63bdb..e43ea9492332 100644 --- a/net/ipv6/ip6_icmp.c +++ b/net/ipv6/ip6_icmp.c @@ -7,47 +7,8 @@ =20 #include =20 -#if IS_ENABLED(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) && IS_ENABLED(CONFIG_NF_NAT) =20 -#if !IS_BUILTIN(CONFIG_IPV6) - -static ip6_icmp_send_t __rcu *ip6_icmp_send; - -int inet6_register_icmp_sender(ip6_icmp_send_t *fn) -{ - return (cmpxchg((ip6_icmp_send_t **)&ip6_icmp_send, NULL, fn) =3D=3D NULL= ) ? - 0 : -EBUSY; -} -EXPORT_SYMBOL(inet6_register_icmp_sender); - -int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn) -{ - int ret; - - ret =3D (cmpxchg((ip6_icmp_send_t **)&ip6_icmp_send, fn, NULL) =3D=3D fn)= ? - 0 : -EINVAL; - - synchronize_net(); - - return ret; -} -EXPORT_SYMBOL(inet6_unregister_icmp_sender); - -void __icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, - const struct inet6_skb_parm *parm) -{ - ip6_icmp_send_t *send; - - rcu_read_lock(); - send =3D rcu_dereference(ip6_icmp_send); - if (send) - send(skb, type, code, info, NULL, parm); - rcu_read_unlock(); -} -EXPORT_SYMBOL(__icmpv6_send); -#endif - -#if IS_ENABLED(CONFIG_NF_NAT) #include void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info) { @@ -60,7 +21,7 @@ void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 = code, __u32 info) =20 ct =3D nf_ct_get(skb_in, &ctinfo); if (!ct || !(READ_ONCE(ct->status) & IPS_NAT_MASK)) { - __icmpv6_send(skb_in, type, code, info, &parm); + icmp6_send(skb_in, type, code, info, NULL, &parm); return; } =20 @@ -76,11 +37,10 @@ void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u= 8 code, __u32 info) orig_ip =3D ipv6_hdr(skb_in)->saddr; dir =3D CTINFO2DIR(ctinfo); ipv6_hdr(skb_in)->saddr =3D ct->tuplehash[dir].tuple.src.u3.in6; - __icmpv6_send(skb_in, type, code, info, &parm); + icmp6_send(skb_in, type, code, info, NULL, &parm); ipv6_hdr(skb_in)->saddr =3D orig_ip; out: consume_skb(cloned_skb); } EXPORT_SYMBOL(icmpv6_ndo_send); #endif -#endif --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E36C93D524D for ; Wed, 25 Mar 2026 12:10:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440654; cv=none; b=ebiWQ6H5fgvwwdJKwEaAF8TmOoy9LznJJ9Gg2EeThu1iosFosW+TScJDOXIbGzdBQL7qqJ1bX0Q+ytpP0V6WxIAJf0dsqwqeuHLjRU6oFv4On92HCfuT6g/eKJEnEUTIOuMdR3nhs7Sra1BiwZY5p/6Jxf4Y7ZsqPRWmG5ifnOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440654; c=relaxed/simple; bh=bpejGpnRoLh47BtBTYYgAjLWe/KAWahAqx+N+kr+Wuc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Im0hPMGm5lzDzXKc4y4rwH1T1hzJZ6/YaPcHUjpWJN0Ogsyp7A7MrShYiTcrOqNwfxpI+iPXoTQsStb0xz2VJzUKO9meHJWgdmKTh2ZNVriHG9MUMs5bOb/LkaeD2nUyEg3e7ZI/YjtFBBhxht5lZOXnvuYBpv6YMJpmsxvbU7U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=xwaTEKu6; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=X/ygdzVo; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=xwaTEKu6; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=X/ygdzVo; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="xwaTEKu6"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="X/ygdzVo"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="xwaTEKu6"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="X/ygdzVo" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 96E715BCCF; Wed, 25 Mar 2026 12:10:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440646; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KPBhNbx59XmxgmAW+4smkMBq9yTZr8g+X+CR1QXB2+c=; b=xwaTEKu6BLORdXxcsFaxf9nbCMO10TY0ybE/ySCPODIhzYXw9Fo5kRQzCanB+QA8HCk/z7 8+eJtKFnD8ML+MX5X6+ovIOChnnXONEzHtXvQc/FKCUvxxJHQWpz87g6uERdhzzQstLC32 rVn7ry6sxknfftvR65HMhSkETMErvic= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440646; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KPBhNbx59XmxgmAW+4smkMBq9yTZr8g+X+CR1QXB2+c=; b=X/ygdzVoA6NsUkq9e8PhGwk+LhiHxuJ9h669XYHxU/y3Wa9nVr++V+94gvqbVe+ujn4boF F5kqP2rNS7hVmLCg== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440646; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KPBhNbx59XmxgmAW+4smkMBq9yTZr8g+X+CR1QXB2+c=; b=xwaTEKu6BLORdXxcsFaxf9nbCMO10TY0ybE/ySCPODIhzYXw9Fo5kRQzCanB+QA8HCk/z7 8+eJtKFnD8ML+MX5X6+ovIOChnnXONEzHtXvQc/FKCUvxxJHQWpz87g6uERdhzzQstLC32 rVn7ry6sxknfftvR65HMhSkETMErvic= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440646; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KPBhNbx59XmxgmAW+4smkMBq9yTZr8g+X+CR1QXB2+c=; b=X/ygdzVoA6NsUkq9e8PhGwk+LhiHxuJ9h669XYHxU/y3Wa9nVr++V+94gvqbVe+ujn4boF F5kqP2rNS7hVmLCg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id F2504443BE; Wed, 25 Mar 2026 12:10:45 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id kNEVOMXQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:10:45 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , linux-kernel@vger.kernel.org Subject: [PATCH 05/11 net-next v5] ipv6: prepare headers for ipv6_stub removal Date: Wed, 25 Mar 2026 13:08:46 +0100 Message-ID: <20260325120928.15848-6-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -7.30 X-Spam-Level: X-Spamd-Result: default: False [-7.30 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_TLS_ALL(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; RCPT_COUNT_SEVEN(0.00)[10]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; URIBL_BLOCKED(0.00)[suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo,suse.com:email]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo,suse.com:email] X-Spam-Flag: NO In preparation for dropping ipv6_stub and converting its users to direct function calls, introduce static inline dummy functions and fallback macros in the IPv6 networking headers. In addition, introduce checks on fib6_nh_init(), ip6_dst_lookup_flow() and ip6_fragment() to avoid a crash due to ipv6.disable=3D1 set during booting. The other functions are safe as they cannot be called with ipv6.disable=3D1 set. These fallbacks ensure that when CONFIG_IPV6 is completely disabled, there are no compiling or linking errors due to code paths not guarded by preprocessor macro IS_ENABLED(CONFIG_IPV6). In addition, export ndisc_send_na(), ip6_route_input() and ip6_fragment(). Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- include/net/ip6_fib.h | 32 ++++++++++++++++++++++++++++++++ include/net/ip6_route.h | 26 ++++++++++++++++++++++++++ include/net/ipv6.h | 10 ++++++++++ include/net/ndisc.h | 6 +++++- net/ipv6/ip6_output.c | 8 ++++++++ net/ipv6/ndisc.c | 1 + net/ipv6/route.c | 6 ++++++ 7 files changed, 88 insertions(+), 1 deletion(-) diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 39c98c3d8ac5..f01ef8ffe296 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -486,11 +486,30 @@ void rt6_get_prefsrc(const struct rt6_info *rt, struc= t in6_addr *addr) rcu_read_unlock(); } =20 +#if IS_ENABLED(CONFIG_IPV6) int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh, struct fib6_config *cfg, gfp_t gfp_flags, struct netlink_ext_ack *extack); void fib6_nh_release(struct fib6_nh *fib6_nh); void fib6_nh_release_dsts(struct fib6_nh *fib6_nh); +#else +static inline int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh, + struct fib6_config *cfg, gfp_t gfp_flags, + struct netlink_ext_ack *extack) +{ + NL_SET_ERR_MSG(extack, "IPv6 support not enabled in kernel"); + return -EAFNOSUPPORT; +} + +static inline void fib6_nh_release(struct fib6_nh *fib6_nh) +{ +} + +static inline void fib6_nh_release_dsts(struct fib6_nh *fib6_nh) +{ +} +#endif + =20 int call_fib6_entry_notifiers(struct net *net, enum fib_event_type event_type, @@ -502,8 +521,15 @@ int call_fib6_multipath_entry_notifiers(struct net *ne= t, unsigned int nsiblings, struct netlink_ext_ack *extack); int call_fib6_entry_notifiers_replace(struct net *net, struct fib6_info *r= t); +#if IS_ENABLED(CONFIG_IPV6) void fib6_rt_update(struct net *net, struct fib6_info *rt, struct nl_info *info); +#else +static inline void fib6_rt_update(struct net *net, struct fib6_info *rt, + struct nl_info *info) +{ +} +#endif void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info, unsigned int flags); =20 @@ -569,7 +595,13 @@ int fib6_tables_dump(struct net *net, struct notifier_= block *nb, struct netlink_ext_ack *extack); =20 void fib6_update_sernum(struct net *net, struct fib6_info *rt); +#if IS_ENABLED(CONFIG_IPV6) void fib6_update_sernum_upto_root(struct net *net, struct fib6_info *rt); +#else +static inline void fib6_update_sernum_upto_root(struct net *net, struct fi= b6_info *rt) +{ +} +#endif void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i); =20 void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val); diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 0c8eeb6abe7a..09ffe0f13ce7 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -77,7 +77,14 @@ static inline bool rt6_qualify_for_ecmp(const struct fib= 6_info *f6i) f6i->fib6_nh->fib_nh_gw_family; } =20 +#if IS_ENABLED(CONFIG_IPV6) void ip6_route_input(struct sk_buff *skb); +#else +static inline void ip6_route_input(struct sk_buff *skb) +{ +} +#endif + struct dst_entry *ip6_route_input_lookup(struct net *net, struct net_device *dev, struct flowi6 *fl6, @@ -119,7 +126,15 @@ int ipv6_route_ioctl(struct net *net, unsigned int cmd, int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags, struct netlink_ext_ack *extack); int ip6_ins_rt(struct net *net, struct fib6_info *f6i); +#if IS_ENABLED(CONFIG_IPV6) int ip6_del_rt(struct net *net, struct fib6_info *f6i, bool skip_notify); +#else +static inline int ip6_del_rt(struct net *net, struct fib6_info *f6i, + bool skip_notify) +{ + return -EAFNOSUPPORT; +} +#endif =20 void rt6_flush_exceptions(struct fib6_info *f6i); void rt6_age_exceptions(struct fib6_info *f6i, struct fib6_gc_args *gc_arg= s, @@ -270,8 +285,19 @@ static inline bool ipv6_anycast_destination(const stru= ct dst_entry *dst, return __ipv6_anycast_destination(&rt->rt6i_dst, rt->rt6i_flags, daddr); } =20 +#if IS_ENABLED(CONFIG_IPV6) int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, int (*output)(struct net *, struct sock *, struct sk_buff *)); +#else +static inline int ip6_fragment(struct net *net, struct sock *sk, + struct sk_buff *skb, + int (*output)(struct net *, struct sock *, + struct sk_buff *)) +{ + kfree_skb(skb); + return -EAFNOSUPPORT; +} +#endif =20 /* Variant of dst_mtu() for IPv6 users */ static inline u32 dst6_mtu(const struct dst_entry *dst) diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 0958cc5c6ec3..f99f273341f0 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -1044,8 +1044,18 @@ static inline struct sk_buff *ip6_finish_skb(struct = sock *sk) =20 int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **ds= t, struct flowi6 *fl6); +#if IS_ENABLED(CONFIG_IPV6) struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *= sk, struct flowi6 *fl6, const struct in6_addr *final_dst); +#else +static inline struct dst_entry *ip6_dst_lookup_flow(struct net *net, const= struct sock *sk, + struct flowi6 *fl6, + const struct in6_addr *final_dst) +{ + return ERR_PTR(-EAFNOSUPPORT); +} +#endif + struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *f= l6, const struct in6_addr *final_dst, bool connected); diff --git a/include/net/ndisc.h b/include/net/ndisc.h index d38783a2ce57..19e2a177bd29 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h @@ -406,13 +406,17 @@ static inline void __ipv6_confirm_neigh_stub(struct n= et_device *dev, static inline struct neighbour *ip_neigh_gw6(struct net_device *dev, const void *addr) { +#if IS_ENABLED(CONFIG_IPV6) struct neighbour *neigh; =20 neigh =3D __ipv6_neigh_lookup_noref_stub(dev, addr); if (unlikely(!neigh)) - neigh =3D __neigh_create(ipv6_stub->nd_tbl, addr, dev, false); + neigh =3D __neigh_create(&nd_tbl, addr, dev, false); =20 return neigh; +#else + return ERR_PTR(-EAFNOSUPPORT); +#endif } =20 int ndisc_init(void); diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 8e2a6b28cea7..63abc4fddaee 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -873,6 +873,11 @@ int ip6_fragment(struct net *net, struct sock *sk, str= uct sk_buff *skb, __be32 frag_id; u8 *prevhdr, nexthdr =3D 0; =20 + if (!ipv6_mod_enabled()) { + kfree_skb(skb); + return -EAFNOSUPPORT; + } + err =3D ip6_find_1stfragopt(skb, &prevhdr); if (err < 0) goto fail; @@ -1045,6 +1050,7 @@ int ip6_fragment(struct net *net, struct sock *sk, st= ruct sk_buff *skb, kfree_skb(skb); return err; } +EXPORT_SYMBOL_GPL(ip6_fragment); =20 static inline int ip6_rt_check(const struct rt6key *rt_key, const struct in6_addr *fl_addr, @@ -1256,6 +1262,8 @@ struct dst_entry *ip6_dst_lookup_flow(struct net *net= , const struct sock *sk, st struct dst_entry *dst =3D NULL; int err; =20 + if (!ipv6_mod_enabled()) + return ERR_PTR(-EAFNOSUPPORT); err =3D ip6_dst_lookup_tail(net, sk, &dst, fl6); if (err) return ERR_PTR(err); diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index f6a5d8c73af9..f76fb8a85452 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -576,6 +576,7 @@ void ndisc_send_na(struct net_device *dev, const struct= in6_addr *daddr, =20 ndisc_send_skb(skb, daddr, src_addr); } +EXPORT_SYMBOL_GPL(ndisc_send_na); =20 static void ndisc_send_unsol_na(struct net_device *dev) { diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 781b43c54932..844a70ea3567 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2655,6 +2655,7 @@ void ip6_route_input(struct sk_buff *skb) skb_dst_set_noref(skb, ip6_route_input_lookup(net, skb->dev, &fl6, skb, flags)); } +EXPORT_SYMBOL_GPL(ip6_route_input); =20 INDIRECT_CALLABLE_SCOPE struct rt6_info *ip6_pol_route_output(struct net *= net, struct fib6_table *table, @@ -3585,6 +3586,11 @@ int fib6_nh_init(struct net *net, struct fib6_nh *fi= b6_nh, struct inet6_dev *idev =3D NULL; int err; =20 + if (!ipv6_mod_enabled()) { + NL_SET_ERR_MSG(extack, "IPv6 support not enabled in kernel"); + return -EAFNOSUPPORT; + } + fib6_nh->fib_nh_family =3D AF_INET6; #ifdef CONFIG_IPV6_ROUTER_PREF fib6_nh->last_probe =3D jiffies; --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C1673D4137 for ; Wed, 25 Mar 2026 12:11:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440670; cv=none; b=VRus9mJE9S48EIhnYMLDNVeJ8J79kTLFeIr3JXr3o+RErm18Wo8aa+NXkoCWcVbpdwGZ7W3AndyQmuuE1rn2f75YBwh2nweYvULajzLviuBbdof4M8rYAIuN5j9sJzmj3DsPT2jhnyrYRgSJXyFmhBpAwo4bHfcPgBAwqJUoYX4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440670; c=relaxed/simple; bh=y8telehMlkyDySSBs+yTJJx/rBl+auZmRy4p3ZAm7ds=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dpVlLOPxVSNABsqHHaHgdMmzxQsIG/D8qI2JRuzApSf5M2o/F1YKMwKW5MbznPRcBmIyq+nXifUv398uxLZisxb3ZtFCVXoxyuoDC/P5YsjIk0QuD5W2kaEbdCRhotiXFiua5i+THFX+hAxGT1DB/RJg4k7Fh01/05AjGc8003g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=w73lPa3c; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=aws09YPw; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=W7hnkWl0; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=jrhs+D39; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="w73lPa3c"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="aws09YPw"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="W7hnkWl0"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="jrhs+D39" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id CA58F5BCCF; Wed, 25 Mar 2026 12:11:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440667; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GLkZ1hIrhvhokYYTEjx2CMlncHQKXTC1pL8a8hzsU8M=; b=w73lPa3cLBF8rH8oQDtfso9w2BI3B7Hlyh6mmVO7sMQOtVPQ/4wM14EIQgf4UGPPI/6f9o KIRr7+64mRuXQShgN1x0imoW/7YEyR6igieTeFdyPwYe2xyyQCQe8bB/wi7NTzLxs5+Nzg EFLYfZ0vL8F0wmBep+dAH/77OJ83H0Y= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440667; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GLkZ1hIrhvhokYYTEjx2CMlncHQKXTC1pL8a8hzsU8M=; b=aws09YPwm8bqQHwdMu0uWwUGXGYQxmMq38Jfn/YGJ+NEpjlOzH5QXkK+3Xf7qYkAWRlNkV E0t3RC7oAenc71Dg== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440666; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GLkZ1hIrhvhokYYTEjx2CMlncHQKXTC1pL8a8hzsU8M=; b=W7hnkWl0B17SnTVAuKra60W6948hiSNGmeDWw+IcIR02oPa3guHKIWPxzM9tZQEJpWIr/U YmmoE7BzAhD5944ceoeOxyNhKJgq85U+nm+/2JUQ4IiQ+ArAtpfnzgnXmURyDYdLpxjoEz +fpcSQR9t78jk2QIFpeivHXikq17iqY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440666; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GLkZ1hIrhvhokYYTEjx2CMlncHQKXTC1pL8a8hzsU8M=; b=jrhs+D39WxTcLO7PmCtgkurCVVC5RLET5srMfdzb+NdqK0W6t+x4yZMUBZgdzuzpXY09EL gUSXOObumj5dtQCg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 41DDB443BE; Wed, 25 Mar 2026 12:11:04 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id gOAUDdjQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:04 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "Jason A. Donenfeld" , Antonio Quartulli , Edward Cree , Jason Gunthorpe , Leon Romanovsky , Zhu Yanjun , Saeed Mahameed , Tariq Toukan , Mark Bloch , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Boris Pismenny , Simon Horman , Pablo Neira Ayuso , Harald Welte , Sabrina Dubroca , Oliver Neukum , Stanislav Yakovlev , Nikolay Aleksandrov , Ido Schimmel , Vlad Dumitrescu , Edward Srouji , Parav Pandit , Kees Cook , Guillaume Nault , Alexei Lazar , Gal Pressman , Jianbo Liu , Cosmin Ratiu , Carolina Jubran , Alexandre Cassen , Petr Machata , Stanislav Fomichev , linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, oss-drivers@corigine.com, linux-net-drivers@amd.com, osmocom-net-gprs@lists.osmocom.org, linux-usb@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, bridge@lists.linux.dev Subject: [PATCH 06/11 net-next v5] drivers: net: drop ipv6_stub usage and use direct function calls Date: Wed, 25 Mar 2026 13:08:47 +0100 Message-ID: <20260325120928.15848-7-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -5.80 X-Spam-Level: X-Spamd-Result: default: False [-5.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FUZZY_RATELIMITED(0.00)[rspamd.com]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; TAGGED_RCPT(0.00)[netdev]; RCPT_COUNT_TWELVE(0.00)[48]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; R_RATELIMIT(0.00)[to_ip_from(RLebtgy37wakf4cwfdza4jg1hg)]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; FREEMAIL_CC(0.00)[suse.de,suse.com,zx2c4.com,openvpn.net,gmail.com,ziepe.ca,kernel.org,nvidia.com,lunn.ch,davemloft.net,google.com,redhat.com,netfilter.org,gnumonks.org,queasysnail.net,neukum.org,blackwall.org,corp.free.fr,fomichev.me,vger.kernel.org,corigine.com,amd.com,lists.osmocom.org,lists.zx2c4.com,lists.linux.dev]; RCVD_TLS_ALL(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; URIBL_BLOCKED(0.00)[suse.com:email,suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo,zx2c4.com:email]; RCVD_COUNT_TWO(0.00)[2]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:email,suse.com:email,imap1.dmz-prg2.suse.org:helo] X-Spam-Flag: NO As IPv6 is built-in only, the ipv6_stub infrastructure is no longer necessary. Convert all drivers currently utilizing ipv6_stub to make direct function calls. The fallback functions introduced previously will prevent linkage errors when CONFIG_IPV6 is disabled. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re Reviewed-by: Jason A. Donenfeld Reviewed-by: Antonio Quartulli Reviewed-by: Edward Cree --- drivers/infiniband/core/addr.c | 3 +-- drivers/infiniband/sw/rxe/rxe_net.c | 6 +++--- .../ethernet/mellanox/mlx5/core/en/rep/neigh.c | 9 +++++---- .../net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 3 +-- .../mellanox/mlx5/core/en/tc_tun_encap.c | 2 +- .../mellanox/mlx5/core/en_accel/ipsec.c | 1 - .../net/ethernet/mellanox/mlx5/core/en_rep.c | 1 - drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 1 - .../net/ethernet/netronome/nfp/flower/action.c | 2 +- .../ethernet/netronome/nfp/flower/tunnel_conf.c | 7 +++---- drivers/net/ethernet/sfc/tc_counters.c | 2 +- drivers/net/ethernet/sfc/tc_encap_actions.c | 5 ++--- drivers/net/geneve.c | 1 - drivers/net/gtp.c | 2 +- drivers/net/ovpn/peer.c | 3 +-- drivers/net/ovpn/udp.c | 3 +-- drivers/net/usb/cdc_mbim.c | 17 +++++++++-------- drivers/net/vxlan/vxlan_core.c | 11 +++++------ drivers/net/vxlan/vxlan_multicast.c | 6 ++---- drivers/net/wireguard/socket.c | 3 +-- drivers/net/wireless/intel/ipw2x00/ipw2100.c | 2 +- net/bridge/br_arp_nd_proxy.c | 3 +-- 22 files changed, 40 insertions(+), 53 deletions(-) diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index 866746695712..48d4b06384ec 100644 --- a/drivers/infiniband/core/addr.c +++ b/drivers/infiniband/core/addr.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -411,7 +410,7 @@ static int addr6_resolve(struct sockaddr *src_sock, fl6.saddr =3D src_in->sin6_addr; fl6.flowi6_oif =3D addr->bound_dev_if; =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(addr->net, NULL, &fl6, NULL); + dst =3D ip6_dst_lookup_flow(addr->net, NULL, &fl6, NULL); if (IS_ERR(dst)) return PTR_ERR(dst); =20 diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rx= e/rxe_net.c index 0bd0902b11f7..cbc646a30003 100644 --- a/drivers/infiniband/sw/rxe/rxe_net.c +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@ -138,9 +138,9 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp = *qp, memcpy(&fl6.daddr, daddr, sizeof(*daddr)); fl6.flowi6_proto =3D IPPROTO_UDP; =20 - ndst =3D ipv6_stub->ipv6_dst_lookup_flow(sock_net(recv_sockets.sk6->sk), - recv_sockets.sk6->sk, &fl6, - NULL); + ndst =3D ip6_dst_lookup_flow(sock_net(recv_sockets.sk6->sk), + recv_sockets.sk6->sk, &fl6, + NULL); if (IS_ERR(ndst)) { rxe_dbg_qp(qp, "no route to %pI6\n", daddr); return NULL; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c b/drive= rs/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c index d220b045b331..648f4521c096 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "neigh.h" #include "tc.h" #include "en_rep.h" @@ -18,8 +19,8 @@ =20 static unsigned long mlx5e_rep_ipv6_interval(void) { - if (IS_ENABLED(CONFIG_IPV6) && ipv6_stub->nd_tbl) - return NEIGH_VAR(&ipv6_stub->nd_tbl->parms, DELAY_PROBE_TIME); + if (IS_ENABLED(CONFIG_IPV6) && ipv6_mod_enabled()) + return NEIGH_VAR(&nd_tbl.parms, DELAY_PROBE_TIME); =20 return ~0UL; } @@ -217,7 +218,7 @@ static int mlx5e_rep_netevent_event(struct notifier_blo= ck *nb, case NETEVENT_NEIGH_UPDATE: n =3D ptr; #if IS_ENABLED(CONFIG_IPV6) - if (n->tbl !=3D ipv6_stub->nd_tbl && n->tbl !=3D &arp_tbl) + if (n->tbl !=3D &nd_tbl && n->tbl !=3D &arp_tbl) #else if (n->tbl !=3D &arp_tbl) #endif @@ -238,7 +239,7 @@ static int mlx5e_rep_netevent_event(struct notifier_blo= ck *nb, * done per device delay prob time parameter. */ #if IS_ENABLED(CONFIG_IPV6) - if (!p->dev || (p->tbl !=3D ipv6_stub->nd_tbl && p->tbl !=3D &arp_tbl)) + if (!p->dev || (p->tbl !=3D &nd_tbl && p->tbl !=3D &arp_tbl)) #else if (!p->dev || p->tbl !=3D &arp_tbl) #endif diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c b/drivers/= net/ethernet/mellanox/mlx5/core/en/tc_tun.c index a14f216048cd..de74dbfe7b20 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c @@ -453,8 +453,7 @@ static int mlx5e_route_lookup_ipv6_get(struct mlx5e_pri= v *priv, =20 if (tunnel && tunnel->get_remote_ifindex) attr->fl.fl6.flowi6_oif =3D tunnel->get_remote_ifindex(dev); - dst =3D ipv6_stub->ipv6_dst_lookup_flow(dev_net(dev), NULL, &attr->fl.fl6, - NULL); + dst =3D ip6_dst_lookup_flow(dev_net(dev), NULL, &attr->fl.fl6, NULL); if (IS_ERR(dst)) return PTR_ERR(dst); =20 diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c b/dr= ivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c index bfd401bee9e8..8b827201935e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c @@ -402,7 +402,7 @@ void mlx5e_tc_update_neigh_used_value(struct mlx5e_neig= h_hash_entry *nhe) tbl =3D &arp_tbl; #if IS_ENABLED(CONFIG_IPV6) else if (m_neigh->family =3D=3D AF_INET6) - tbl =3D ipv6_stub->nd_tbl; + tbl =3D &nd_tbl; #endif else return; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c b/dri= vers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c index 64e13747084e..a52e12c3c95a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c @@ -36,7 +36,6 @@ #include #include #include -#include =20 #include "en.h" #include "eswitch.h" diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net= /ethernet/mellanox/mlx5/core/en_rep.c index 8992f0f7a870..ba6c0f38cc73 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -38,7 +38,6 @@ #include #include #include -#include =20 #include "eswitch.h" #include "en.h" diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_tc.c index 397a93584fd6..a9001d1c902f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/net/ethernet/netronome/nfp/flower/action.c b/drivers/n= et/ethernet/netronome/nfp/flower/action.c index aca2a7417af3..ae2f8b31adfb 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/action.c +++ b/drivers/net/ethernet/netronome/nfp/flower/action.c @@ -470,7 +470,7 @@ nfp_fl_set_tun(struct nfp_app *app, struct nfp_fl_set_t= un *set_tun, =20 flow.daddr =3D ip_tun->key.u.ipv6.dst; flow.flowi4_proto =3D IPPROTO_UDP; - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, NULL, &flow, NULL); + dst =3D ip6_dst_lookup_flow(net, NULL, &flow, NULL); if (!IS_ERR(dst)) { set_tun->ttl =3D ip6_dst_hoplimit(dst); dst_release(dst); diff --git a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c b/driv= ers/net/ethernet/netronome/nfp/flower/tunnel_conf.c index 0cef0e2b85d0..ca30702f8878 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +++ b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c @@ -650,7 +650,7 @@ static void nfp_tun_neigh_update(struct work_struct *wo= rk) flow6.daddr =3D *(struct in6_addr *)n->primary_key; if (!neigh_invalid) { struct dst_entry *dst; - /* Use ipv6_dst_lookup_flow to populate flow6->saddr + /* Use ip6_dst_lookup_flow to populate flow6->saddr * and other fields. This information is only needed * for new entries, lookup can be skipped when an entry * gets invalidated - as only the daddr is needed for @@ -730,7 +730,7 @@ nfp_tun_neigh_event_handler(struct notifier_block *nb, = unsigned long event, return NOTIFY_DONE; } #if IS_ENABLED(CONFIG_IPV6) - if (n->tbl !=3D ipv6_stub->nd_tbl && n->tbl !=3D &arp_tbl) + if (n->tbl !=3D &nd_tbl && n->tbl !=3D &arp_tbl) #else if (n->tbl !=3D &arp_tbl) #endif @@ -815,8 +815,7 @@ void nfp_tunnel_request_route_v6(struct nfp_app *app, s= truct sk_buff *skb) flow.flowi6_proto =3D IPPROTO_UDP; =20 #if IS_ENABLED(CONFIG_INET) && IS_ENABLED(CONFIG_IPV6) - dst =3D ipv6_stub->ipv6_dst_lookup_flow(dev_net(netdev), NULL, &flow, - NULL); + dst =3D ip6_dst_lookup_flow(dev_net(netdev), NULL, &flow, NULL); if (IS_ERR(dst)) goto fail_rcu_unlock; #else diff --git a/drivers/net/ethernet/sfc/tc_counters.c b/drivers/net/ethernet/= sfc/tc_counters.c index d168282f30bf..b84235e93ffe 100644 --- a/drivers/net/ethernet/sfc/tc_counters.c +++ b/drivers/net/ethernet/sfc/tc_counters.c @@ -112,7 +112,7 @@ static void efx_tc_counter_work(struct work_struct *wor= k) encap->neigh->egdev); else #if IS_ENABLED(CONFIG_IPV6) - n =3D neigh_lookup(ipv6_stub->nd_tbl, + n =3D neigh_lookup(&nd_tbl, &encap->neigh->dst_ip6, encap->neigh->egdev); #else diff --git a/drivers/net/ethernet/sfc/tc_encap_actions.c b/drivers/net/ethe= rnet/sfc/tc_encap_actions.c index da35705cc5e1..db222abef53b 100644 --- a/drivers/net/ethernet/sfc/tc_encap_actions.c +++ b/drivers/net/ethernet/sfc/tc_encap_actions.c @@ -149,8 +149,7 @@ static int efx_bind_neigh(struct efx_nic *efx, #if IS_ENABLED(CONFIG_IPV6) struct dst_entry *dst; =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, NULL, &flow6, - NULL); + dst =3D ip6_dst_lookup_flow(net, NULL, &flow6, NULL); rc =3D PTR_ERR_OR_ZERO(dst); if (rc) { NL_SET_ERR_MSG_MOD(extack, "Failed to lookup route for IPv6 encap"); @@ -531,7 +530,7 @@ static int efx_neigh_event(struct efx_nic *efx, struct = neighbour *n) if (n->tbl =3D=3D &arp_tbl) { keysize =3D sizeof(keys.dst_ip); #if IS_ENABLED(CONFIG_IPV6) - } else if (n->tbl =3D=3D ipv6_stub->nd_tbl) { + } else if (n->tbl =3D=3D &nd_tbl) { ipv6 =3D true; keysize =3D sizeof(keys.dst_ip6); #endif diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 01cdd06102e0..c6563367d382 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index e8949f556209..70b9e58b9b78 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -374,7 +374,7 @@ static struct rt6_info *ip6_route_output_gtp(struct net= *net, fl6->saddr =3D *saddr; fl6->flowi6_proto =3D sk->sk_protocol; =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, sk, fl6, NULL); + dst =3D ip6_dst_lookup_flow(net, sk, fl6, NULL); if (IS_ERR(dst)) return ERR_PTR(-ENETUNREACH); =20 diff --git a/drivers/net/ovpn/peer.c b/drivers/net/ovpn/peer.c index 26b55d813f0e..c02dfab51a6e 100644 --- a/drivers/net/ovpn/peer.c +++ b/drivers/net/ovpn/peer.c @@ -827,8 +827,7 @@ static struct in6_addr ovpn_nexthop_from_rt6(struct ovp= n_priv *ovpn, .daddr =3D dest, }; =20 - entry =3D ipv6_stub->ipv6_dst_lookup_flow(dev_net(ovpn->dev), NULL, &fl, - NULL); + entry =3D ip6_dst_lookup_flow(dev_net(ovpn->dev), NULL, &fl, NULL); if (IS_ERR(entry)) { net_dbg_ratelimited("%s: no route to host %pI6c\n", netdev_name(ovpn->dev), &dest); diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c index 272b535ecaad..059e896b4a2f 100644 --- a/drivers/net/ovpn/udp.c +++ b/drivers/net/ovpn/udp.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -251,7 +250,7 @@ static int ovpn_udp6_output(struct ovpn_peer *peer, str= uct ovpn_bind *bind, dst_cache_reset(cache); } =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(sock_net(sk), sk, &fl, NULL); + dst =3D ip6_dst_lookup_flow(sock_net(sk), sk, &fl, NULL); if (IS_ERR(dst)) { ret =3D PTR_ERR(dst); net_dbg_ratelimited("%s: no route to host %pISpc: %d\n", diff --git a/drivers/net/usb/cdc_mbim.c b/drivers/net/usb/cdc_mbim.c index dbf01210b0e7..877fb0ed7d3d 100644 --- a/drivers/net/usb/cdc_mbim.c +++ b/drivers/net/usb/cdc_mbim.c @@ -20,7 +20,6 @@ #include #include #include -#include #include =20 /* alternative VLAN for IP session 0 if not untagged */ @@ -302,6 +301,7 @@ static struct sk_buff *cdc_mbim_tx_fixup(struct usbnet = *dev, struct sk_buff *skb return NULL; } =20 +#if IS_ENABLED(CONFIG_IPV6) /* Some devices are known to send Neighbor Solicitation messages and * require Neighbor Advertisement replies. The IPv6 core will not * respond since IFF_NOARP is set, so we must handle them ourselves. @@ -342,12 +342,11 @@ static void do_neigh_solicit(struct usbnet *dev, u8 *= buf, u16 tci) is_router =3D !!READ_ONCE(in6_dev->cnf.forwarding); in6_dev_put(in6_dev); =20 - /* ipv6_stub !=3D NULL if in6_dev_get returned an inet6_dev */ - ipv6_stub->ndisc_send_na(netdev, &iph->saddr, &msg->target, - is_router /* router */, - true /* solicited */, - false /* override */, - true /* inc_opt */); + ndisc_send_na(netdev, &iph->saddr, &msg->target, + is_router /* router */, + true /* solicited */, + false /* override */, + true /* inc_opt */); out: dev_put(netdev); } @@ -362,7 +361,7 @@ static bool is_neigh_solicit(u8 *buf, size_t len) msg->icmph.icmp6_code =3D=3D 0 && msg->icmph.icmp6_type =3D=3D NDISC_NEIGHBOUR_SOLICITATION); } - +#endif /* IPV6 */ =20 static struct sk_buff *cdc_mbim_process_dgram(struct usbnet *dev, u8 *buf,= size_t len, u16 tci) { @@ -378,8 +377,10 @@ static struct sk_buff *cdc_mbim_process_dgram(struct u= sbnet *dev, u8 *buf, size_ proto =3D htons(ETH_P_IP); break; case 0x60: +#if IS_ENABLED(CONFIG_IPV6) if (is_neigh_solicit(buf, len)) do_neigh_solicit(dev, buf, tci); +#endif proto =3D htons(ETH_P_IPV6); break; default: diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 17c941aac32d..b5fbd03418b6 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -2045,7 +2044,7 @@ static int neigh_reduce(struct net_device *dev, struc= t sk_buff *skb, __be32 vni) ipv6_addr_is_multicast(&msg->target)) goto out; =20 - n =3D neigh_lookup(ipv6_stub->nd_tbl, &msg->target, dev); + n =3D neigh_lookup(&nd_tbl, &msg->target, dev); =20 if (n) { struct vxlan_rdst *rdst =3D NULL; @@ -2130,15 +2129,15 @@ static bool route_shortcircuit(struct net_device *d= ev, struct sk_buff *skb) { struct ipv6hdr *pip6; =20 - /* check if nd_tbl is not initiliazed due to - * ipv6.disable=3D1 set during boot + /* check if ipv6.disable=3D1 set during boot was set + * during booting so nd_tbl is not initialized */ - if (!ipv6_stub->nd_tbl) + if (!ipv6_mod_enabled()) return false; if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) return false; pip6 =3D ipv6_hdr(skb); - n =3D neigh_lookup(ipv6_stub->nd_tbl, &pip6->daddr, dev); + n =3D neigh_lookup(&nd_tbl, &pip6->daddr, dev); if (!n && (vxlan->cfg.flags & VXLAN_F_L3MISS)) { union vxlan_addr ipa =3D { .sin6.sin6_addr =3D pip6->daddr, diff --git a/drivers/net/vxlan/vxlan_multicast.c b/drivers/net/vxlan/vxlan_= multicast.c index a7f2d67dc61b..b0e80bca855c 100644 --- a/drivers/net/vxlan/vxlan_multicast.c +++ b/drivers/net/vxlan/vxlan_multicast.c @@ -39,8 +39,7 @@ int vxlan_igmp_join(struct vxlan_dev *vxlan, union vxlan_= addr *rip, =20 sk =3D sock6->sock->sk; lock_sock(sk); - ret =3D ipv6_stub->ipv6_sock_mc_join(sk, ifindex, - &ip->sin6.sin6_addr); + ret =3D ipv6_sock_mc_join(sk, ifindex, &ip->sin6.sin6_addr); release_sock(sk); #endif } @@ -73,8 +72,7 @@ int vxlan_igmp_leave(struct vxlan_dev *vxlan, union vxlan= _addr *rip, =20 sk =3D sock6->sock->sk; lock_sock(sk); - ret =3D ipv6_stub->ipv6_sock_mc_drop(sk, ifindex, - &ip->sin6.sin6_addr); + ret =3D ipv6_sock_mc_drop(sk, ifindex, &ip->sin6.sin6_addr); release_sock(sk); #endif } diff --git a/drivers/net/wireguard/socket.c b/drivers/net/wireguard/socket.c index 253488f8c00f..c362c78d908e 100644 --- a/drivers/net/wireguard/socket.c +++ b/drivers/net/wireguard/socket.c @@ -136,8 +136,7 @@ static int send6(struct wg_device *wg, struct sk_buff *= skb, if (cache) dst_cache_reset(cache); } - dst =3D ipv6_stub->ipv6_dst_lookup_flow(sock_net(sock), sock, &fl, - NULL); + dst =3D ip6_dst_lookup_flow(sock_net(sock), sock, &fl, NULL); if (IS_ERR(dst)) { ret =3D PTR_ERR(dst); net_dbg_ratelimited("%s: No route to %pISpfsc, error %d\n", diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wir= eless/intel/ipw2x00/ipw2100.c index 248a051da52d..c11428485dcc 100644 --- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c +++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c @@ -4838,7 +4838,7 @@ static int ipw2100_system_config(struct ipw2100_priv = *priv, int batch_mode) =20 /* If IPv6 is configured in the kernel then we don't want to filter out all * of the multicast packets as IPv6 needs some. */ -#if !defined(CONFIG_IPV6) && !defined(CONFIG_IPV6_MODULE) +#if !defined(CONFIG_IPV6) cmd.host_command =3D ADD_MULTICAST; cmd.host_command_sequence =3D 0; cmd.host_command_length =3D 0; diff --git a/net/bridge/br_arp_nd_proxy.c b/net/bridge/br_arp_nd_proxy.c index 1e2b51769eec..c06386eda47f 100644 --- a/net/bridge/br_arp_nd_proxy.c +++ b/net/bridge/br_arp_nd_proxy.c @@ -17,7 +17,6 @@ #include #include #include -#include #if IS_ENABLED(CONFIG_IPV6) #include #endif @@ -455,7 +454,7 @@ void br_do_suppress_nd(struct sk_buff *skb, struct net_= bridge *br, return; } =20 - n =3D neigh_lookup(ipv6_stub->nd_tbl, &msg->target, vlandev); + n =3D neigh_lookup(&nd_tbl, &msg->target, vlandev); if (n) { struct net_bridge_fdb_entry *f; =20 --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDE743D8912 for ; Wed, 25 Mar 2026 12:11:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440677; cv=none; b=LvSCC05HM5N7kPmLDliLqn8xJvXp/wuwwbUzxHshLBCOiL2QXIMw3CbyQp5UaqA49PeSwsb/NslEOm0ix735idBqg7YOjFS+eHRz3dKnktl2am9t5imXL89uRdGONJtPZg0N9neWgA9CyHhkTVMPkweEl3Bzxvr63kI6gfTcMKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440677; c=relaxed/simple; bh=YZ30EUiSvyZn32npch4Omuzp+R16WxZju5lBzueb3Wg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iwJpcFu+FqHDKO84S6fvcZbD/3/8HpXTaFSVZ9TTnIi3z4ARNJIRYU1Lc362gaF8BZxCAAKx1NAwAkrnpqO+G6xXYQaSdjSV+/a6A4xkY80sk2uToYBQWNPX5W8PtUv7wxwZ25l6DInwBZxZgdRho9IpL0ohykimGrMX9sAqOVU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=rliEAYDg; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=XS6K9T9u; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=rliEAYDg; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=XS6K9T9u; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="rliEAYDg"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="XS6K9T9u"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="rliEAYDg"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="XS6K9T9u" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 9DACF5BCD0; Wed, 25 Mar 2026 12:11:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440668; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5xGB9DUadFbOfKpSdw2M70Ponh9KjHnghTDfmBqTObs=; b=rliEAYDgnSvggG995+4ZPuLWf7SB/0rCmTfrYelPj27DcOyjIOTGAzqq70CROWh67dWGQA yEMgOMWL/Y/w7EFZO2Qpe1MdGS3kzzMxR4yhKQlhVyKbPSh982slskIApyxGMq7/M0TGqY w6/jl3v9FOb4PGHqC46mG3Px+YuFswU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440668; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5xGB9DUadFbOfKpSdw2M70Ponh9KjHnghTDfmBqTObs=; b=XS6K9T9u2n3FPhLKdace8XYg6VUbvV2yeZeYkipzgKzO3RKfP9/HkkUqPc8uPLTruML7Uy iU+aiuUgyDw71PBA== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440668; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5xGB9DUadFbOfKpSdw2M70Ponh9KjHnghTDfmBqTObs=; b=rliEAYDgnSvggG995+4ZPuLWf7SB/0rCmTfrYelPj27DcOyjIOTGAzqq70CROWh67dWGQA yEMgOMWL/Y/w7EFZO2Qpe1MdGS3kzzMxR4yhKQlhVyKbPSh982slskIApyxGMq7/M0TGqY w6/jl3v9FOb4PGHqC46mG3Px+YuFswU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440668; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5xGB9DUadFbOfKpSdw2M70Ponh9KjHnghTDfmBqTObs=; b=XS6K9T9u2n3FPhLKdace8XYg6VUbvV2yeZeYkipzgKzO3RKfP9/HkkUqPc8uPLTruML7Uy iU+aiuUgyDw71PBA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id ED8AE443BE; Wed, 25 Mar 2026 12:11:07 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 2EMHN9vQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:07 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Willem de Bruijn , linux-kernel@vger.kernel.org Subject: [PATCH 07/11 net-next v5] ipv4: drop ipv6_stub usage and use direct function calls Date: Wed, 25 Mar 2026 13:08:48 +0100 Message-ID: <20260325120928.15848-8-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -5.80 X-Spam-Level: X-Spamd-Result: default: False [-5.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MIME_TRACE(0.00)[0:+]; URIBL_BLOCKED(0.00)[suse.de:mid,suse.de:email,suse.com:email,imap1.dmz-prg2.suse.org:helo]; FUZZY_RATELIMITED(0.00)[rspamd.com]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; FREEMAIL_CC(0.00)[suse.de,suse.com,davemloft.net,kernel.org,google.com,redhat.com,gmail.com,vger.kernel.org]; RCVD_TLS_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TAGGED_RCPT(0.00)[]; RCPT_COUNT_SEVEN(0.00)[11]; RCVD_VIA_SMTP_AUTH(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email,suse.de:mid,suse.de:email] X-Spam-Flag: NO As IPv6 is built-in only, the ipv6_stub infrastructure is no longer necessary. The IPv4 stack interacts with IPv6 mainly to support IPv4 routes with IPv6 next-hops (RFC 8950). Convert all these cross-family calls from ipv6_stub to direct function calls. The fallback functions introduced previously will prevent linkage errors when CONFIG_IPV6 is disabled. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- net/ipv4/fib_semantics.c | 16 ++++++++-------- net/ipv4/icmp.c | 2 +- net/ipv4/nexthop.c | 28 +++++++++++++++------------- net/ipv4/route.c | 4 ++-- net/ipv4/udp.c | 7 ++----- 5 files changed, 28 insertions(+), 29 deletions(-) diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index 01cb587866d8..3e8fadc28798 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c @@ -585,9 +585,8 @@ static int fib_detect_death(struct fib_info *fi, int or= der, =20 if (likely(nhc->nhc_gw_family =3D=3D AF_INET)) n =3D neigh_lookup(&arp_tbl, &nhc->nhc_gw.ipv4, nhc->nhc_dev); - else if (nhc->nhc_gw_family =3D=3D AF_INET6) - n =3D neigh_lookup(ipv6_stub->nd_tbl, &nhc->nhc_gw.ipv6, - nhc->nhc_dev); + else if (IS_ENABLED(CONFIG_IPV6) && nhc->nhc_gw_family =3D=3D AF_INET6) + n =3D neigh_lookup(&nd_tbl, &nhc->nhc_gw.ipv6, nhc->nhc_dev); else n =3D NULL; =20 @@ -1083,7 +1082,7 @@ static int fib_check_nh_v6_gw(struct net *net, struct= fib_nh *nh, struct fib6_nh fib6_nh =3D {}; int err; =20 - err =3D ipv6_stub->fib6_nh_init(net, &fib6_nh, &cfg, GFP_KERNEL, extack); + err =3D fib6_nh_init(net, &fib6_nh, &cfg, GFP_KERNEL, extack); if (!err) { nh->fib_nh_dev =3D fib6_nh.fib_nh_dev; netdev_hold(nh->fib_nh_dev, &nh->fib_nh_dev_tracker, @@ -1091,7 +1090,7 @@ static int fib_check_nh_v6_gw(struct net *net, struct= fib_nh *nh, nh->fib_nh_oif =3D nh->fib_nh_dev->ifindex; nh->fib_nh_scope =3D RT_SCOPE_LINK; =20 - ipv6_stub->fib6_nh_release(&fib6_nh); + fib6_nh_release(&fib6_nh); } =20 return err; @@ -2147,9 +2146,10 @@ static bool fib_good_nh(const struct fib_nh *nh) if (likely(nh->fib_nh_gw_family =3D=3D AF_INET)) n =3D __ipv4_neigh_lookup_noref(nh->fib_nh_dev, (__force u32)nh->fib_nh_gw4); - else if (nh->fib_nh_gw_family =3D=3D AF_INET6) - n =3D __ipv6_neigh_lookup_noref_stub(nh->fib_nh_dev, - &nh->fib_nh_gw6); + else if (IS_ENABLED(CONFIG_IPV6) && + nh->fib_nh_gw_family =3D=3D AF_INET6) + n =3D __ipv6_neigh_lookup_noref(nh->fib_nh_dev, + &nh->fib_nh_gw6); else n =3D NULL; if (n) diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 223e5efa5ac7..fb397fbb28fc 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -1344,7 +1344,7 @@ bool icmp_build_probe(struct sk_buff *skb, struct icm= phdr *icmphdr) case ICMP_AFI_IP6: if (iio->ident.addr.ctype3_hdr.addrlen !=3D sizeof(struct in6_addr)) goto send_mal_query; - dev =3D ipv6_stub->ipv6_dev_find(net, &iio->ident.addr.ip_addr.ipv6_add= r, dev); + dev =3D ipv6_dev_find(net, &iio->ident.addr.ip_addr.ipv6_addr, dev); dev_hold(dev); break; #endif diff --git a/net/ipv4/nexthop.c b/net/ipv4/nexthop.c index c942f1282236..9703e67d552a 100644 --- a/net/ipv4/nexthop.c +++ b/net/ipv4/nexthop.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include @@ -510,7 +510,7 @@ static void nexthop_free_single(struct nexthop *nh) fib_nh_release(nh->net, &nhi->fib_nh); break; case AF_INET6: - ipv6_stub->fib6_nh_release(&nhi->fib6_nh); + fib6_nh_release(&nhi->fib6_nh); break; } kfree(nhi); @@ -1367,7 +1367,7 @@ static bool ipv6_good_nh(const struct fib6_nh *nh) =20 rcu_read_lock(); =20 - n =3D __ipv6_neigh_lookup_noref_stub(nh->fib_nh_dev, &nh->fib_nh_gw6); + n =3D __ipv6_neigh_lookup_noref(nh->fib_nh_dev, &nh->fib_nh_gw6); if (n) state =3D READ_ONCE(n->nud_state); =20 @@ -1401,7 +1401,7 @@ static bool nexthop_is_good_nh(const struct nexthop *= nh) case AF_INET: return ipv4_good_nh(&nhi->fib_nh); case AF_INET6: - return ipv6_good_nh(&nhi->fib6_nh); + return IS_ENABLED(CONFIG_IPV6) && ipv6_good_nh(&nhi->fib6_nh); } =20 return false; @@ -2151,8 +2151,8 @@ static void __remove_nexthop_fib(struct net *net, str= uct nexthop *nh) fib6_info_hold(f6i); =20 spin_unlock_bh(&nh->lock); - ipv6_stub->ip6_del_rt(net, f6i, - !READ_ONCE(net->ipv4.sysctl_nexthop_compat_mode)); + ip6_del_rt(net, f6i, + !READ_ONCE(net->ipv4.sysctl_nexthop_compat_mode)); =20 spin_lock_bh(&nh->lock); } @@ -2208,8 +2208,11 @@ static void nh_rt_cache_flush(struct net *net, struc= t nexthop *nh, if (!list_empty(&nh->fi_list)) rt_cache_flush(net); =20 - list_for_each_entry(f6i, &nh->f6i_list, nh_list) - ipv6_stub->fib6_update_sernum(net, f6i); + list_for_each_entry(f6i, &nh->f6i_list, nh_list) { + spin_lock_bh(&f6i->fib6_table->tb6_lock); + fib6_update_sernum_upto_root(net, f6i); + spin_unlock_bh(&f6i->fib6_table->tb6_lock); + } =20 /* if an IPv6 group was replaced, we have to release all old * dsts to make sure all refcounts are released @@ -2223,7 +2226,7 @@ static void nh_rt_cache_flush(struct net *net, struct= nexthop *nh, struct nh_info *nhi =3D rtnl_dereference(nhge->nh->nh_info); =20 if (nhi->family =3D=3D AF_INET6) - ipv6_stub->fib6_nh_release_dsts(&nhi->fib6_nh); + fib6_nh_release_dsts(&nhi->fib6_nh); } } =20 @@ -2504,7 +2507,7 @@ static void __nexthop_replace_notify(struct net *net,= struct nexthop *nh, } =20 list_for_each_entry(f6i, &nh->f6i_list, nh_list) - ipv6_stub->fib6_rt_update(net, f6i, info); + fib6_rt_update(net, f6i, info); } =20 /* send RTM_NEWROUTE with REPLACE flag set for all FIB entries @@ -2877,13 +2880,12 @@ static int nh_create_ipv6(struct net *net, struct = nexthop *nh, fib6_cfg.fc_flags |=3D RTF_GATEWAY; =20 /* sets nh_dev if successful */ - err =3D ipv6_stub->fib6_nh_init(net, fib6_nh, &fib6_cfg, GFP_KERNEL, - extack); + err =3D fib6_nh_init(net, fib6_nh, &fib6_cfg, GFP_KERNEL, extack); if (err) { /* IPv6 is not enabled, don't call fib6_nh_release */ if (err =3D=3D -EAFNOSUPPORT) goto out; - ipv6_stub->fib6_nh_release(fib6_nh); + fib6_nh_release(fib6_nh); } else { nh->nh_flags =3D fib6_nh->fib_nh_flags; } diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 463236e0dc2d..bc1296f0ea69 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -446,8 +446,8 @@ static void ipv4_confirm_neigh(const struct dst_entry *= dst, const void *daddr) =20 if (rt->rt_gw_family =3D=3D AF_INET) { pkey =3D (const __be32 *)&rt->rt_gw4; - } else if (rt->rt_gw_family =3D=3D AF_INET6) { - return __ipv6_confirm_neigh_stub(dev, &rt->rt_gw6); + } else if (IS_ENABLED(CONFIG_IPV6) && rt->rt_gw_family =3D=3D AF_INET6) { + return __ipv6_confirm_neigh(dev, &rt->rt_gw6); } else if (!daddr || (rt->rt_flags & (RTCF_MULTICAST | RTCF_BROADCAST | RTCF_LOCAL))) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 2cc6d059b692..443a1fbb9cc7 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -118,9 +118,6 @@ #include #include #include -#if IS_ENABLED(CONFIG_IPV6) -#include -#endif #include =20 struct udp_table udp_table __read_mostly; @@ -2855,7 +2852,7 @@ static void set_xfrm_gro_udp_encap_rcv(__u16 encap_ty= pe, unsigned short family, =20 if (udp_test_bit(GRO_ENABLED, sk) && encap_type =3D=3D UDP_ENCAP_ESPINUDP= ) { if (IS_ENABLED(CONFIG_IPV6) && family =3D=3D AF_INET6) - new_gro_receive =3D ipv6_stub->xfrm6_gro_udp_encap_rcv; + new_gro_receive =3D xfrm6_gro_udp_encap_rcv; else new_gro_receive =3D xfrm4_gro_udp_encap_rcv; =20 @@ -2927,7 +2924,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, in= t optname, #if IS_ENABLED(CONFIG_IPV6) if (sk->sk_family =3D=3D AF_INET6) WRITE_ONCE(up->encap_rcv, - ipv6_stub->xfrm6_udp_encap_rcv); + xfrm6_udp_encap_rcv); else #endif WRITE_ONCE(up->encap_rcv, --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 924883D5248 for ; Wed, 25 Mar 2026 12:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440675; cv=none; b=qhLBaPiF/yJL9fmLfB0DuKL8otfj5SO8gJrjx46IM4rFlWbRa8V3ggAqoJaFh+aWCT+uM5XdbJh+KNDKEz/hZHFRooov9hUnw7Z6ZccYMGD5FBrlDWUSLYmu4wJgW47rAMfp2VuVjC6HzmJgK2mGwZSEgkZHgB5lHjajWWJcE40= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440675; c=relaxed/simple; bh=Ph+hR2FK+LouzobsqwpltHuWWKx5EUGZPTyXRQSumKU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fg/WJQa/c/WvY7yp8rMNISlZNhbnz2ocTfRUJ9ia8n2QT/pqRFHMCjDdkcbgenlwDPnpxpqiDkw2XK6Tf1OUyx9M2b5UxmwSFD1XbYnrIQPDXLI3P1dGeQJcXVIHvABP/P0uIxTq9BoBvUSAKqdyhklSHLNiIkZWvp5YJSovYp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.client-ip=195.135.223.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 2EC7E4D22F; Wed, 25 Mar 2026 12:11:12 +0000 (UTC) Authentication-Results: smtp-out1.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C2F25443BE; Wed, 25 Mar 2026 12:11:10 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 0CKpLN7Qw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:10 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Aaron Conole , Eelco Chaudron , Ilya Maximets , Jamal Hadi Salim , Jiri Pirko , Jon Maloy , Steffen Klassert , Herbert Xu , Kuniyuki Iwashima , Guillaume Nault , Breno Leitao , Sabrina Dubroca , Kees Cook , Stanislav Fomichev , linux-kernel@vger.kernel.org, dev@openvswitch.org, tipc-discussion@lists.sourceforge.net Subject: [PATCH 08/11 net-next v5] net: convert remaining ipv6_stub users to direct function calls Date: Wed, 25 Mar 2026 13:08:49 +0100 Message-ID: <20260325120928.15848-9-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 2EC7E4D22F X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Spam-Score: -4.00 X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org As IPv6 is built-in only, the ipv6_stub infrastructure is no longer necessary. Convert remaining ipv6_stub users to make direct function calls. The fallback functions introduced previously will prevent linkage errors when CONFIG_IPV6 is disabled. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- include/net/udp_tunnel.h | 2 +- net/mpls/af_mpls.c | 3 +-- net/openvswitch/actions.c | 3 ++- net/sched/sch_frag.c | 4 ++-- net/tipc/udp_media.c | 9 +++------ net/xfrm/espintcp.c | 5 +---- net/xfrm/xfrm_nat_keepalive.c | 4 ++-- net/xfrm/xfrm_output.c | 3 +-- 8 files changed, 13 insertions(+), 20 deletions(-) diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index fc1fc43345b5..40089fc4c1ba 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -230,7 +230,7 @@ static inline void udp_tunnel_encap_enable(struct sock = *sk) =20 #if IS_ENABLED(CONFIG_IPV6) if (READ_ONCE(sk->sk_family) =3D=3D PF_INET6) - ipv6_stub->udpv6_encap_enable(); + udpv6_encap_enable(); #endif udp_encap_enable(); } diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index b32311f5cbf7..58a5bd69ee61 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -24,7 +24,6 @@ #if IS_ENABLED(CONFIG_IPV6) #include #endif -#include #include #include "internal.h" =20 @@ -642,7 +641,7 @@ static struct net_device *inet6_fib_lookup_dev(struct n= et *net, =20 memset(&fl6, 0, sizeof(fl6)); memcpy(&fl6.daddr, addr, sizeof(struct in6_addr)); - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, NULL, &fl6, NULL); + dst =3D ip6_dst_lookup_flow(net, NULL, &fl6, NULL); if (IS_ERR(dst)) return ERR_CAST(dst); =20 diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 792ca44a461d..140388a18ae0 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -810,7 +811,7 @@ static void ovs_fragment(struct net *net, struct vport = *vport, skb_dst_set_noref(skb, &ovs_rt.dst); IP6CB(skb)->frag_max_size =3D mru; =20 - ipv6_stub->ipv6_fragment(net, skb->sk, skb, ovs_vport_output); + ip6_fragment(net, skb->sk, skb, ovs_vport_output); refdst_drop(orig_dst); } else { WARN_ONCE(1, "Failed fragment ->%s: eth=3D%04x, MRU=3D%d, MTU=3D%d.", diff --git a/net/sched/sch_frag.c b/net/sched/sch_frag.c index d1d87dce7f3f..75ee52750919 100644 --- a/net/sched/sch_frag.c +++ b/net/sched/sch_frag.c @@ -6,6 +6,7 @@ #include #include #include +#include =20 struct sch_frag_data { unsigned long dst; @@ -127,8 +128,7 @@ static int sch_fragment(struct net *net, struct sk_buff= *skb, skb_dst_set_noref(skb, &sch_frag_rt.dst); IP6CB(skb)->frag_max_size =3D mru; =20 - ret =3D ipv6_stub->ipv6_fragment(net, skb->sk, skb, - sch_frag_xmit); + ret =3D ip6_fragment(net, skb->sk, skb, sch_frag_xmit); local_unlock_nested_bh(&sch_frag_data_storage.bh_lock); refdst_drop(orig_dst); } else { diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index 2b8e385d1e51..2c66b356025a 100644 --- a/net/tipc/udp_media.c +++ b/net/tipc/udp_media.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include "core.h" #include "addr.h" @@ -207,9 +206,8 @@ static int tipc_udp_xmit(struct net *net, struct sk_buf= f *skb, .saddr =3D src->ipv6, .flowi6_proto =3D IPPROTO_UDP }; - ndst =3D ipv6_stub->ipv6_dst_lookup_flow(net, - ub->ubsock->sk, - &fl6, NULL); + ndst =3D ip6_dst_lookup_flow(net, ub->ubsock->sk, + &fl6, NULL); if (IS_ERR(ndst)) { err =3D PTR_ERR(ndst); goto tx_error; @@ -418,8 +416,7 @@ static int enable_mcast(struct udp_bearer *ub, struct u= dp_media_addr *remote) #if IS_ENABLED(CONFIG_IPV6) } else { lock_sock(sk); - err =3D ipv6_stub->ipv6_sock_mc_join(sk, ub->ifindex, - &remote->ipv6); + err =3D ipv6_sock_mc_join(sk, ub->ifindex, &remote->ipv6); release_sock(sk); #endif } diff --git a/net/xfrm/espintcp.c b/net/xfrm/espintcp.c index 998832419097..a2756186e13a 100644 --- a/net/xfrm/espintcp.c +++ b/net/xfrm/espintcp.c @@ -7,9 +7,6 @@ #include #include #include -#if IS_ENABLED(CONFIG_IPV6) -#include -#endif #include =20 static void handle_nonesp(struct espintcp_ctx *ctx, struct sk_buff *skb, @@ -43,7 +40,7 @@ static void handle_esp(struct sk_buff *skb, struct sock *= sk) local_bh_disable(); #if IS_ENABLED(CONFIG_IPV6) if (sk->sk_family =3D=3D AF_INET6) - ipv6_stub->xfrm6_rcv_encap(skb, IPPROTO_ESP, 0, TCP_ENCAP_ESPINTCP); + xfrm6_rcv_encap(skb, IPPROTO_ESP, 0, TCP_ENCAP_ESPINTCP); else #endif xfrm4_rcv_encap(skb, IPPROTO_ESP, 0, TCP_ENCAP_ESPINTCP); diff --git a/net/xfrm/xfrm_nat_keepalive.c b/net/xfrm/xfrm_nat_keepalive.c index ebf95d48e86c..d47f2ed8005c 100644 --- a/net/xfrm/xfrm_nat_keepalive.c +++ b/net/xfrm/xfrm_nat_keepalive.c @@ -98,14 +98,14 @@ static int nat_keepalive_send_ipv6(struct sk_buff *skb, local_lock_nested_bh(&nat_keepalive_sk_ipv6.bh_lock); sk =3D this_cpu_read(nat_keepalive_sk_ipv6.sock); sock_net_set(sk, net); - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, sk, &fl6, NULL); + dst =3D ip6_dst_lookup_flow(net, sk, &fl6, NULL); if (IS_ERR(dst)) { local_unlock_nested_bh(&nat_keepalive_sk_ipv6.bh_lock); return PTR_ERR(dst); } =20 skb_dst_set(skb, dst); - err =3D ipv6_stub->ip6_xmit(sk, skb, &fl6, skb->mark, NULL, 0, 0); + err =3D ip6_xmit(sk, skb, &fl6, skb->mark, NULL, 0, 0); sock_net_set(sk, &init_net); local_unlock_nested_bh(&nat_keepalive_sk_ipv6.bh_lock); return err; diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 54222fcbd7fd..a9652b422f51 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c @@ -20,7 +20,6 @@ =20 #if IS_ENABLED(CONFIG_IPV6) #include -#include #endif =20 #include "xfrm_inout.h" @@ -900,7 +899,7 @@ int xfrm6_tunnel_check_size(struct sk_buff *skb) skb->protocol =3D htons(ETH_P_IPV6); =20 if (xfrm6_local_dontfrag(sk)) - ipv6_stub->xfrm6_local_rxpmtu(skb, mtu); + xfrm6_local_rxpmtu(skb, mtu); else if (sk) xfrm_local_error(skb, mtu); else --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6CD83D565E for ; Wed, 25 Mar 2026 12:11:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440683; cv=none; b=LsY6jyWftCMPjHdt1Y2LMGNKZY2qhj9+RFpV3G/TZ37FzIsS6I6nL3ZAz+pUT54NTlPOXpAG8QwJOpmAyscwLpz8aSA2nzTYeRwdPhuNZpeD+5HBjUuPhqLxPKDOonAh4e3YOGCt2eq1Z/+cRCB672Ei0cVfOdAOme0xzeYO9ys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440683; c=relaxed/simple; bh=YYtKao6aBuWtvYF/wEvxh6z1w78BlO96uQ3o/MpEfho=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=qzN2DUNQSnJdQTC2LM1i2eELdySEIdSx3CiRCFTDZYiDmFmcsPygfL4ABd5SsTfhHJqvARs0tMVI5xlaLHmxXShjuv4UOd0532FMc/mZqvL3FI0eDAalck2HV15iC6BEm8+FQFU+UIHc3/71UH4avtmliNDYIqQCw/onS1IzQUg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 3E67C5BD73; Wed, 25 Mar 2026 12:11:17 +0000 (UTC) Authentication-Results: smtp-out2.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D4586443BE; Wed, 25 Mar 2026 12:11:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id KJTWMOPQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:15 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , Daniel Borkmann , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Alexei Starovoitov , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Ido Schimmel , Guillaume Nault , linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH 09/11 net-next v5] bpf: remove ipv6_bpf_stub completely and use direct function calls Date: Wed, 25 Mar 2026 13:08:50 +0100 Message-ID: <20260325120928.15848-10-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 3E67C5BD73 X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Spam-Score: -4.00 X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[]; TAGGED_RCPT(0.00)[] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org As IPv6 is built-in only, the ipv6_bpf_stub can be removed completely. Convert all ipv6_bpf_stub usage to direct function calls instead. The fallback functions introduced previously will prevent linkage errors when CONFIG_IPV6 is disabled. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re Acked-by: Daniel Borkmann Reviewed-by: Martin KaFai Lau --- include/net/ipv6.h | 2 ++ include/net/ipv6_stubs.h | 21 --------------- net/core/filter.c | 58 +++++++++++++++++----------------------- net/core/lwt_bpf.c | 10 ++++--- net/ipv6/af_inet6.c | 13 ++------- 5 files changed, 35 insertions(+), 69 deletions(-) diff --git a/include/net/ipv6.h b/include/net/ipv6.h index f99f273341f0..d042afe7a245 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -1149,6 +1149,8 @@ void ipv6_local_rxpmtu(struct sock *sk, struct flowi6= *fl6, u32 mtu); void inet6_cleanup_sock(struct sock *sk); void inet6_sock_destruct(struct sock *sk); int inet6_release(struct socket *sock); +int __inet6_bind(struct sock *sk, struct sockaddr_unsized *uaddr, int addr= _len, + u32 flags); int inet6_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int ad= dr_len); int inet6_bind_sk(struct sock *sk, struct sockaddr_unsized *uaddr, int add= r_len); int inet6_getname(struct socket *sock, struct sockaddr *uaddr, diff --git a/include/net/ipv6_stubs.h b/include/net/ipv6_stubs.h index 907681cecde8..dc708d9eca7a 100644 --- a/include/net/ipv6_stubs.h +++ b/include/net/ipv6_stubs.h @@ -77,25 +77,4 @@ struct ipv6_stub { __u32 mark, struct ipv6_txoptions *opt, int tclass, u32 priority); }; extern const struct ipv6_stub *ipv6_stub __read_mostly; - -/* A stub used by bpf helpers. Similarly ugly as ipv6_stub */ -struct ipv6_bpf_stub { - int (*inet6_bind)(struct sock *sk, struct sockaddr_unsized *uaddr, int ad= dr_len, - u32 flags); - struct sock *(*udp6_lib_lookup)(const struct net *net, - const struct in6_addr *saddr, __be16 sport, - const struct in6_addr *daddr, __be16 dport, - int dif, int sdif, struct sk_buff *skb); - int (*ipv6_setsockopt)(struct sock *sk, int level, int optname, - sockptr_t optval, unsigned int optlen); - int (*ipv6_getsockopt)(struct sock *sk, int level, int optname, - sockptr_t optval, sockptr_t optlen); - int (*ipv6_dev_get_saddr)(struct net *net, - const struct net_device *dst_dev, - const struct in6_addr *daddr, - unsigned int prefs, - struct in6_addr *saddr); -}; -extern const struct ipv6_bpf_stub *ipv6_bpf_stub __read_mostly; - #endif diff --git a/net/core/filter.c b/net/core/filter.c index c56821afaa0f..d55525cc5540 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -73,7 +73,6 @@ #include #include #include -#include #include #include #include @@ -2279,7 +2278,7 @@ static int __bpf_redirect_neigh_v6(struct sk_buff *sk= b, struct net_device *dev, .saddr =3D ip6h->saddr, }; =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, NULL, &fl6, NULL); + dst =3D ip6_dst_lookup_flow(net, NULL, &fl6, NULL); if (IS_ERR(dst)) goto out_drop; =20 @@ -5577,12 +5576,12 @@ static int sol_ipv6_sockopt(struct sock *sk, int op= tname, } =20 if (getopt) - return ipv6_bpf_stub->ipv6_getsockopt(sk, SOL_IPV6, optname, - KERNEL_SOCKPTR(optval), - KERNEL_SOCKPTR(optlen)); + return do_ipv6_getsockopt(sk, SOL_IPV6, optname, + KERNEL_SOCKPTR(optval), + KERNEL_SOCKPTR(optlen)); =20 - return ipv6_bpf_stub->ipv6_setsockopt(sk, SOL_IPV6, optname, - KERNEL_SOCKPTR(optval), *optlen); + return do_ipv6_setsockopt(sk, SOL_IPV6, optname, + KERNEL_SOCKPTR(optval), *optlen); } =20 static int __bpf_setsockopt(struct sock *sk, int level, int optname, @@ -5981,9 +5980,6 @@ static const struct bpf_func_proto bpf_sock_ops_cb_fl= ags_set_proto =3D { .arg2_type =3D ARG_ANYTHING, }; =20 -const struct ipv6_bpf_stub *ipv6_bpf_stub __read_mostly; -EXPORT_SYMBOL_GPL(ipv6_bpf_stub); - BPF_CALL_3(bpf_bind, struct bpf_sock_addr_kern *, ctx, struct sockaddr *, = addr, int, addr_len) { @@ -6007,11 +6003,9 @@ BPF_CALL_3(bpf_bind, struct bpf_sock_addr_kern *, ct= x, struct sockaddr *, addr, return err; if (((struct sockaddr_in6 *)addr)->sin6_port =3D=3D htons(0)) flags |=3D BIND_FORCE_ADDRESS_NO_PORT; - /* ipv6_bpf_stub cannot be NULL, since it's called from - * bpf_cgroup_inet6_connect hook and ipv6 is already loaded - */ - return ipv6_bpf_stub->inet6_bind(sk, (struct sockaddr_unsized *)addr, - addr_len, flags); + + return __inet6_bind(sk, (struct sockaddr_unsized *)addr, + addr_len, flags); #endif /* CONFIG_IPV6 */ } #endif /* CONFIG_INET */ @@ -6099,9 +6093,9 @@ static int bpf_fib_set_fwd_params(struct bpf_fib_look= up *params, u32 mtu) static int bpf_ipv4_fib_lookup(struct net *net, struct bpf_fib_lookup *par= ams, u32 flags, bool check_mtu) { + struct neighbour *neigh =3D NULL; struct fib_nh_common *nhc; struct in_device *in_dev; - struct neighbour *neigh; struct net_device *dev; struct fib_result res; struct flowi4 fl4; @@ -6221,8 +6215,8 @@ static int bpf_ipv4_fib_lookup(struct net *net, struc= t bpf_fib_lookup *params, if (likely(nhc->nhc_gw_family !=3D AF_INET6)) neigh =3D __ipv4_neigh_lookup_noref(dev, (__force u32)params->ipv4_dst); - else - neigh =3D __ipv6_neigh_lookup_noref_stub(dev, params->ipv6_dst); + else if (IS_ENABLED(CONFIG_IPV6)) + neigh =3D __ipv6_neigh_lookup_noref(dev, params->ipv6_dst); =20 if (!neigh || !(READ_ONCE(neigh->nud_state) & NUD_VALID)) return BPF_FIB_LKUP_RET_NO_NEIGH; @@ -6290,12 +6284,11 @@ static int bpf_ipv6_fib_lookup(struct net *net, str= uct bpf_fib_lookup *params, params->tbid =3D 0; } =20 - tb =3D ipv6_stub->fib6_get_table(net, tbid); + tb =3D fib6_get_table(net, tbid); if (unlikely(!tb)) return BPF_FIB_LKUP_RET_NOT_FWDED; =20 - err =3D ipv6_stub->fib6_table_lookup(net, tb, oif, &fl6, &res, - strict); + err =3D fib6_table_lookup(net, tb, oif, &fl6, &res, strict); } else { if (flags & BPF_FIB_LOOKUP_MARK) fl6.flowi6_mark =3D params->mark; @@ -6305,7 +6298,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struc= t bpf_fib_lookup *params, fl6.flowi6_tun_key.tun_id =3D 0; fl6.flowi6_uid =3D sock_net_uid(net, NULL); =20 - err =3D ipv6_stub->fib6_lookup(net, oif, &fl6, &res, strict); + err =3D fib6_lookup(net, oif, &fl6, &res, strict); } =20 if (unlikely(err || IS_ERR_OR_NULL(res.f6i) || @@ -6326,11 +6319,11 @@ static int bpf_ipv6_fib_lookup(struct net *net, str= uct bpf_fib_lookup *params, return BPF_FIB_LKUP_RET_NOT_FWDED; } =20 - ipv6_stub->fib6_select_path(net, &res, &fl6, fl6.flowi6_oif, - fl6.flowi6_oif !=3D 0, NULL, strict); + fib6_select_path(net, &res, &fl6, fl6.flowi6_oif, + fl6.flowi6_oif !=3D 0, NULL, strict); =20 if (check_mtu) { - mtu =3D ipv6_stub->ip6_mtu_from_fib6(&res, dst, src); + mtu =3D ip6_mtu_from_fib6(&res, dst, src); if (params->tot_len > mtu) { params->mtu_result =3D mtu; /* union with tot_len */ return BPF_FIB_LKUP_RET_FRAG_NEEDED; @@ -6351,9 +6344,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struc= t bpf_fib_lookup *params, if (res.f6i->fib6_prefsrc.plen) { *src =3D res.f6i->fib6_prefsrc.addr; } else { - err =3D ipv6_bpf_stub->ipv6_dev_get_saddr(net, dev, - &fl6.daddr, 0, - src); + err =3D ipv6_dev_get_saddr(net, dev, &fl6.daddr, 0, src); if (err) return BPF_FIB_LKUP_RET_NO_SRC_ADDR; } @@ -6365,7 +6356,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struc= t bpf_fib_lookup *params, /* xdp and cls_bpf programs are run in RCU-bh so rcu_read_lock_bh is * not needed here. */ - neigh =3D __ipv6_neigh_lookup_noref_stub(dev, dst); + neigh =3D __ipv6_neigh_lookup_noref(dev, dst); if (!neigh || !(READ_ONCE(neigh->nud_state) & NUD_VALID)) return BPF_FIB_LKUP_RET_NO_NEIGH; memcpy(params->dmac, neigh->ha, ETH_ALEN); @@ -6900,11 +6891,10 @@ static struct sock *sk_lookup(struct net *net, stru= ct bpf_sock_tuple *tuple, src6, tuple->ipv6.sport, dst6, ntohs(tuple->ipv6.dport), dif, sdif, &refcounted); - else if (likely(ipv6_bpf_stub)) - sk =3D ipv6_bpf_stub->udp6_lib_lookup(net, - src6, tuple->ipv6.sport, - dst6, tuple->ipv6.dport, - dif, sdif, NULL); + else if (likely(ipv6_mod_enabled())) + sk =3D __udp6_lib_lookup(net, src6, tuple->ipv6.sport, + dst6, tuple->ipv6.dport, + dif, sdif, NULL); #endif } =20 diff --git a/net/core/lwt_bpf.c b/net/core/lwt_bpf.c index 9f40be0c3e71..f71ef82a5f3d 100644 --- a/net/core/lwt_bpf.c +++ b/net/core/lwt_bpf.c @@ -13,7 +13,6 @@ #include #include #include -#include =20 struct bpf_lwt_prog { struct bpf_prog *prog; @@ -103,7 +102,12 @@ static int bpf_lwt_input_reroute(struct sk_buff *skb) dev_put(dev); } else if (skb->protocol =3D=3D htons(ETH_P_IPV6)) { skb_dst_drop(skb); - err =3D ipv6_stub->ipv6_route_input(skb); + if (IS_ENABLED(CONFIG_IPV6)) { + ip6_route_input(skb); + err =3D skb_dst(skb)->error; + } else { + err =3D -EAFNOSUPPORT; + } } else { err =3D -EAFNOSUPPORT; } @@ -233,7 +237,7 @@ static int bpf_lwt_xmit_reroute(struct sk_buff *skb) fl6.daddr =3D iph6->daddr; fl6.saddr =3D iph6->saddr; =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, skb->sk, &fl6, NULL); + dst =3D ip6_dst_lookup_flow(net, skb->sk, &fl6, NULL); if (IS_ERR(dst)) { err =3D PTR_ERR(dst); goto err; diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index bb29b29fdcfb..07ae6ea7743a 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -264,8 +264,8 @@ static int inet6_create(struct net *net, struct socket = *sock, int protocol, goto out; } =20 -static int __inet6_bind(struct sock *sk, struct sockaddr_unsized *uaddr, i= nt addr_len, - u32 flags) +int __inet6_bind(struct sock *sk, struct sockaddr_unsized *uaddr, int addr= _len, + u32 flags) { struct sockaddr_in6 *addr =3D (struct sockaddr_in6 *)uaddr; struct inet_sock *inet =3D inet_sk(sk); @@ -1032,14 +1032,6 @@ static const struct ipv6_stub ipv6_stub_impl =3D { .ip6_xmit =3D ip6_xmit, }; =20 -static const struct ipv6_bpf_stub ipv6_bpf_stub_impl =3D { - .inet6_bind =3D __inet6_bind, - .udp6_lib_lookup =3D __udp6_lib_lookup, - .ipv6_setsockopt =3D do_ipv6_setsockopt, - .ipv6_getsockopt =3D do_ipv6_getsockopt, - .ipv6_dev_get_saddr =3D ipv6_dev_get_saddr, -}; - static int __init inet6_init(void) { struct list_head *r; @@ -1199,7 +1191,6 @@ static int __init inet6_init(void) /* ensure that ipv6 stubs are visible only after ipv6 is ready */ wmb(); ipv6_stub =3D &ipv6_stub_impl; - ipv6_bpf_stub =3D &ipv6_bpf_stub_impl; out: return err; =20 --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7BE983DA7E4 for ; Wed, 25 Mar 2026 12:11:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440689; cv=none; b=RSTo0xzsPNWu0Z/rKgE2Ku/Idd6NerBoqS1/nyIPoI0LGvtnb8hk+kCnM4UhK/3gWd16XmU/FYX9nS9cSXKexZ4Sia8KHp1RGQtVWsPTmj+4rKEgV/ojSgd057BrDQ7X2WGVPF4kfuk++NFtQDD+/OAChBNEXtb/u0biMBhul8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440689; c=relaxed/simple; bh=uvc/oFHdNoZKiacIaapij73qjvotaDSVAlVkne8H+n8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=E3rF5fhNQoBExDZYUeNvrV+3wgbXYdw9G0W+hSy+iNnmNePcZd/g79bPhkCLIkk4sLT55IDZy4ipn+u6JD1TIzCgRnxShuG4sPnbvfmhRSBF3jJ8zTO9C7mbDlw3Cqx4A8xTAnWlfCZNvrZMoZiz01eU+q8uFe1eOMkhJArTr/Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=HCymKhvu; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=hILDJom6; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=HCymKhvu; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=hILDJom6; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="HCymKhvu"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="hILDJom6"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="HCymKhvu"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="hILDJom6" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id C336D5BCCF; Wed, 25 Mar 2026 12:11:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440680; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IIeqtjPrEfWXXR7DA3h8n7OIs5BFX7/wUbz+m8e3AY0=; b=HCymKhvuy8eAv19yTrgOZ95N41HA55Nron2wOqybPHn2IrxTt0oHVAD1HmyAl+PFSAkHBY M/8NAMoUzseZrbCEAcr4xdiLru3v2y9X6/0/1jakDZhd9ioP0WV89+NQVTcqX91UQyPTi/ LUfMS9bCTQAWTwVfCKdwXwjcSWUNuAo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440680; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IIeqtjPrEfWXXR7DA3h8n7OIs5BFX7/wUbz+m8e3AY0=; b=hILDJom6CvVrhPtOvTZvfiNV5/4ntxBx/FBS8DQdE1XSYr2DfLpOT66T2uFqPvoZMHfefm VjCg5KGXkuMl9cCQ== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1774440680; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IIeqtjPrEfWXXR7DA3h8n7OIs5BFX7/wUbz+m8e3AY0=; b=HCymKhvuy8eAv19yTrgOZ95N41HA55Nron2wOqybPHn2IrxTt0oHVAD1HmyAl+PFSAkHBY M/8NAMoUzseZrbCEAcr4xdiLru3v2y9X6/0/1jakDZhd9ioP0WV89+NQVTcqX91UQyPTi/ LUfMS9bCTQAWTwVfCKdwXwjcSWUNuAo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1774440680; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IIeqtjPrEfWXXR7DA3h8n7OIs5BFX7/wUbz+m8e3AY0=; b=hILDJom6CvVrhPtOvTZvfiNV5/4ntxBx/FBS8DQdE1XSYr2DfLpOT66T2uFqPvoZMHfefm VjCg5KGXkuMl9cCQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 277D9443BE; Wed, 25 Mar 2026 12:11:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id cKKqBujQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:20 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , linux-kernel@vger.kernel.org Subject: [PATCH 10/11 net-next v5] ipv6: remove ipv6_stub infrastructure completely Date: Wed, 25 Mar 2026 13:08:51 +0100 Message-ID: <20260325120928.15848-11-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-7.30 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; RCVD_VIA_SMTP_AUTH(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; TO_DN_SOME(0.00)[]; RCVD_TLS_ALL(0.00)[]; R_RATELIMIT(0.00)[to_ip_from(RLrr9ek4ud4f4qwi71m7motjzt)]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_SEVEN(0.00)[10]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCVD_COUNT_TWO(0.00)[2]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo,suse.de:mid,suse.de:email] X-Spam-Flag: NO X-Spam-Score: -7.30 X-Spam-Level: As IPv6 is built-in only and there are no more users of ipv6_stub, the ipv6_stub is now entirely obsolete. Remove all the code related to the definition, initialization and usage. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- include/net/ip6_fib.h | 1 - include/net/ipv6_stubs.h | 80 ---------------------------------- include/net/ndisc.h | 25 +---------- include/net/udp_tunnel.h | 1 - net/ipv6/addrconf_core.c | 91 --------------------------------------- net/ipv6/af_inet6.c | 40 ----------------- net/ipv6/ip6_fib.c | 8 ---- net/ipv6/ip6_udp_tunnel.c | 3 +- 8 files changed, 3 insertions(+), 246 deletions(-) delete mode 100644 include/net/ipv6_stubs.h diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index f01ef8ffe296..3e72cce4fe0f 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -602,7 +602,6 @@ static inline void fib6_update_sernum_upto_root(struct = net *net, struct fib6_inf { } #endif -void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i); =20 void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val); static inline bool fib6_metric_locked(struct fib6_info *f6i, int metric) diff --git a/include/net/ipv6_stubs.h b/include/net/ipv6_stubs.h deleted file mode 100644 index dc708d9eca7a..000000000000 --- a/include/net/ipv6_stubs.h +++ /dev/null @@ -1,80 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _IPV6_STUBS_H -#define _IPV6_STUBS_H - -#include -#include -#include -#include -#include -#include -#include -#include - -/* structs from net/ip6_fib.h */ -struct fib6_info; -struct fib6_nh; -struct fib6_config; -struct fib6_result; - -/* This is ugly, ideally these symbols should be built - * into the core kernel. - */ -struct ipv6_stub { - int (*ipv6_sock_mc_join)(struct sock *sk, int ifindex, - const struct in6_addr *addr); - int (*ipv6_sock_mc_drop)(struct sock *sk, int ifindex, - const struct in6_addr *addr); - struct dst_entry *(*ipv6_dst_lookup_flow)(struct net *net, - const struct sock *sk, - struct flowi6 *fl6, - const struct in6_addr *final_dst); - int (*ipv6_route_input)(struct sk_buff *skb); - - struct fib6_table *(*fib6_get_table)(struct net *net, u32 id); - int (*fib6_lookup)(struct net *net, int oif, struct flowi6 *fl6, - struct fib6_result *res, int flags); - int (*fib6_table_lookup)(struct net *net, struct fib6_table *table, - int oif, struct flowi6 *fl6, - struct fib6_result *res, int flags); - void (*fib6_select_path)(const struct net *net, struct fib6_result *res, - struct flowi6 *fl6, int oif, bool oif_match, - const struct sk_buff *skb, int strict); - u32 (*ip6_mtu_from_fib6)(const struct fib6_result *res, - const struct in6_addr *daddr, - const struct in6_addr *saddr); - - int (*fib6_nh_init)(struct net *net, struct fib6_nh *fib6_nh, - struct fib6_config *cfg, gfp_t gfp_flags, - struct netlink_ext_ack *extack); - void (*fib6_nh_release)(struct fib6_nh *fib6_nh); - void (*fib6_nh_release_dsts)(struct fib6_nh *fib6_nh); - void (*fib6_update_sernum)(struct net *net, struct fib6_info *rt); - int (*ip6_del_rt)(struct net *net, struct fib6_info *rt, bool skip_notify= ); - void (*fib6_rt_update)(struct net *net, struct fib6_info *rt, - struct nl_info *info); - - void (*udpv6_encap_enable)(void); - void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *dadd= r, - const struct in6_addr *solicited_addr, - bool router, bool solicited, bool override, bool inc_opt); -#if IS_ENABLED(CONFIG_XFRM) - void (*xfrm6_local_rxpmtu)(struct sk_buff *skb, u32 mtu); - int (*xfrm6_udp_encap_rcv)(struct sock *sk, struct sk_buff *skb); - struct sk_buff *(*xfrm6_gro_udp_encap_rcv)(struct sock *sk, - struct list_head *head, - struct sk_buff *skb); - int (*xfrm6_rcv_encap)(struct sk_buff *skb, int nexthdr, __be32 spi, - int encap_type); -#endif - struct neigh_table *nd_tbl; - - int (*ipv6_fragment)(struct net *net, struct sock *sk, struct sk_buff *sk= b, - int (*output)(struct net *, struct sock *, struct sk_buff *)); - struct net_device *(*ipv6_dev_find)(struct net *net, const struct in6_add= r *addr, - struct net_device *dev); - int (*ip6_xmit)(const struct sock *sk, struct sk_buff *skb, struct flowi6= *fl6, - __u32 mark, struct ipv6_txoptions *opt, int tclass, u32 priority); -}; -extern const struct ipv6_stub *ipv6_stub __read_mostly; -#endif diff --git a/include/net/ndisc.h b/include/net/ndisc.h index 19e2a177bd29..3da1a6f8d3f9 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h @@ -2,8 +2,6 @@ #ifndef _NDISC_H #define _NDISC_H =20 -#include - /* * ICMP codes for neighbour discovery messages */ @@ -359,14 +357,6 @@ static inline struct neighbour *__ipv6_neigh_lookup_no= ref(struct net_device *dev return ___neigh_lookup_noref(&nd_tbl, neigh_key_eq128, ndisc_hashfn, pkey= , dev); } =20 -static inline -struct neighbour *__ipv6_neigh_lookup_noref_stub(struct net_device *dev, - const void *pkey) -{ - return ___neigh_lookup_noref(ipv6_stub->nd_tbl, neigh_key_eq128, - ndisc_hashfn, pkey, dev); -} - static inline struct neighbour *__ipv6_neigh_lookup(struct net_device *dev= , const void *pkey) { struct neighbour *n; @@ -391,25 +381,13 @@ static inline void __ipv6_confirm_neigh(struct net_de= vice *dev, rcu_read_unlock(); } =20 -static inline void __ipv6_confirm_neigh_stub(struct net_device *dev, - const void *pkey) -{ - struct neighbour *n; - - rcu_read_lock(); - n =3D __ipv6_neigh_lookup_noref_stub(dev, pkey); - neigh_confirm(n); - rcu_read_unlock(); -} - -/* uses ipv6_stub and is meant for use outside of IPv6 core */ static inline struct neighbour *ip_neigh_gw6(struct net_device *dev, const void *addr) { #if IS_ENABLED(CONFIG_IPV6) struct neighbour *neigh; =20 - neigh =3D __ipv6_neigh_lookup_noref_stub(dev, addr); + neigh =3D __ipv6_neigh_lookup_noref(dev, addr); if (unlikely(!neigh)) neigh =3D __neigh_create(&nd_tbl, addr, dev, false); =20 @@ -438,6 +416,7 @@ void ndisc_send_skb(struct sk_buff *skb, const struct i= n6_addr *daddr, =20 void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr, const struct in6_addr *daddr); + void ndisc_send_na(struct net_device *dev, const struct in6_addr *daddr, const struct in6_addr *solicited_addr, bool router, bool solicited, bool override, bool inc_opt); diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 40089fc4c1ba..47c23d4a1740 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -7,7 +7,6 @@ =20 #if IS_ENABLED(CONFIG_IPV6) #include -#include #endif =20 #define UDP_TUNNEL_PARTIAL_FEATURES NETIF_F_GSO_ENCAP_ALL diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c index c008d21925d7..fa27a90ab3cd 100644 --- a/net/ipv6/addrconf_core.c +++ b/net/ipv6/addrconf_core.c @@ -6,7 +6,6 @@ =20 #include #include -#include #include #include =20 @@ -129,96 +128,6 @@ int inet6addr_validator_notifier_call_chain(unsigned l= ong val, void *v) } EXPORT_SYMBOL(inet6addr_validator_notifier_call_chain); =20 -static struct dst_entry *eafnosupport_ipv6_dst_lookup_flow(struct net *net, - const struct sock *sk, - struct flowi6 *fl6, - const struct in6_addr *final_dst) -{ - return ERR_PTR(-EAFNOSUPPORT); -} - -static int eafnosupport_ipv6_route_input(struct sk_buff *skb) -{ - return -EAFNOSUPPORT; -} - -static struct fib6_table *eafnosupport_fib6_get_table(struct net *net, u32= id) -{ - return NULL; -} - -static int -eafnosupport_fib6_table_lookup(struct net *net, struct fib6_table *table, - int oif, struct flowi6 *fl6, - struct fib6_result *res, int flags) -{ - return -EAFNOSUPPORT; -} - -static int -eafnosupport_fib6_lookup(struct net *net, int oif, struct flowi6 *fl6, - struct fib6_result *res, int flags) -{ - return -EAFNOSUPPORT; -} - -static void -eafnosupport_fib6_select_path(const struct net *net, struct fib6_result *r= es, - struct flowi6 *fl6, int oif, bool have_oif_match, - const struct sk_buff *skb, int strict) -{ -} - -static u32 -eafnosupport_ip6_mtu_from_fib6(const struct fib6_result *res, - const struct in6_addr *daddr, - const struct in6_addr *saddr) -{ - return 0; -} - -static int eafnosupport_fib6_nh_init(struct net *net, struct fib6_nh *fib6= _nh, - struct fib6_config *cfg, gfp_t gfp_flags, - struct netlink_ext_ack *extack) -{ - NL_SET_ERR_MSG(extack, "IPv6 support not enabled in kernel"); - return -EAFNOSUPPORT; -} - -static int eafnosupport_ip6_del_rt(struct net *net, struct fib6_info *rt, - bool skip_notify) -{ - return -EAFNOSUPPORT; -} - -static int eafnosupport_ipv6_fragment(struct net *net, struct sock *sk, st= ruct sk_buff *skb, - int (*output)(struct net *, struct sock *, struct sk_buff *)) -{ - kfree_skb(skb); - return -EAFNOSUPPORT; -} - -static struct net_device *eafnosupport_ipv6_dev_find(struct net *net, cons= t struct in6_addr *addr, - struct net_device *dev) -{ - return ERR_PTR(-EAFNOSUPPORT); -} - -const struct ipv6_stub *ipv6_stub __read_mostly =3D &(struct ipv6_stub) { - .ipv6_dst_lookup_flow =3D eafnosupport_ipv6_dst_lookup_flow, - .ipv6_route_input =3D eafnosupport_ipv6_route_input, - .fib6_get_table =3D eafnosupport_fib6_get_table, - .fib6_table_lookup =3D eafnosupport_fib6_table_lookup, - .fib6_lookup =3D eafnosupport_fib6_lookup, - .fib6_select_path =3D eafnosupport_fib6_select_path, - .ip6_mtu_from_fib6 =3D eafnosupport_ip6_mtu_from_fib6, - .fib6_nh_init =3D eafnosupport_fib6_nh_init, - .ip6_del_rt =3D eafnosupport_ip6_del_rt, - .ipv6_fragment =3D eafnosupport_ipv6_fragment, - .ipv6_dev_find =3D eafnosupport_ipv6_dev_find, -}; -EXPORT_SYMBOL_GPL(ipv6_stub); - /* IPv6 Wildcard Address and Loopback Address defined by RFC2553 */ const struct in6_addr in6addr_loopback __aligned(BITS_PER_LONG/8) =3D IN6ADDR_LOOPBACK_INIT; diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 07ae6ea7743a..33abd8d8cd7d 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -51,7 +51,6 @@ #include #include #include -#include #include #ifdef CONFIG_IPV6_TUNNEL #include @@ -996,42 +995,6 @@ static struct pernet_operations inet6_net_ops =3D { .exit =3D inet6_net_exit, }; =20 -static int ipv6_route_input(struct sk_buff *skb) -{ - ip6_route_input(skb); - return skb_dst(skb)->error; -} - -static const struct ipv6_stub ipv6_stub_impl =3D { - .ipv6_sock_mc_join =3D ipv6_sock_mc_join, - .ipv6_sock_mc_drop =3D ipv6_sock_mc_drop, - .ipv6_dst_lookup_flow =3D ip6_dst_lookup_flow, - .ipv6_route_input =3D ipv6_route_input, - .fib6_get_table =3D fib6_get_table, - .fib6_table_lookup =3D fib6_table_lookup, - .fib6_lookup =3D fib6_lookup, - .fib6_select_path =3D fib6_select_path, - .ip6_mtu_from_fib6 =3D ip6_mtu_from_fib6, - .fib6_nh_init =3D fib6_nh_init, - .fib6_nh_release =3D fib6_nh_release, - .fib6_nh_release_dsts =3D fib6_nh_release_dsts, - .fib6_update_sernum =3D fib6_update_sernum_stub, - .fib6_rt_update =3D fib6_rt_update, - .ip6_del_rt =3D ip6_del_rt, - .udpv6_encap_enable =3D udpv6_encap_enable, - .ndisc_send_na =3D ndisc_send_na, -#if IS_ENABLED(CONFIG_XFRM) - .xfrm6_local_rxpmtu =3D xfrm6_local_rxpmtu, - .xfrm6_udp_encap_rcv =3D xfrm6_udp_encap_rcv, - .xfrm6_gro_udp_encap_rcv =3D xfrm6_gro_udp_encap_rcv, - .xfrm6_rcv_encap =3D xfrm6_rcv_encap, -#endif - .nd_tbl =3D &nd_tbl, - .ipv6_fragment =3D ip6_fragment, - .ipv6_dev_find =3D ipv6_dev_find, - .ip6_xmit =3D ip6_xmit, -}; - static int __init inet6_init(void) { struct list_head *r; @@ -1188,9 +1151,6 @@ static int __init inet6_init(void) goto sysctl_fail; #endif =20 - /* ensure that ipv6 stubs are visible only after ipv6 is ready */ - wmb(); - ipv6_stub =3D &ipv6_stub_impl; out: return err; =20 diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index a935004ec9df..3d52044e0bdb 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -1408,14 +1408,6 @@ void fib6_update_sernum_upto_root(struct net *net, s= truct fib6_info *rt) __fib6_update_sernum_upto_root(rt, fib6_new_sernum(net)); } =20 -/* allow ipv4 to update sernum via ipv6_stub */ -void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i) -{ - spin_lock_bh(&f6i->fib6_table->tb6_lock); - fib6_update_sernum_upto_root(net, f6i); - spin_unlock_bh(&f6i->fib6_table->tb6_lock); -} - /* * Add routing information to the routing tree. * / diff --git a/net/ipv6/ip6_udp_tunnel.c b/net/ipv6/ip6_udp_tunnel.c index cef3e0210744..405ef1cb8864 100644 --- a/net/ipv6/ip6_udp_tunnel.c +++ b/net/ipv6/ip6_udp_tunnel.c @@ -162,8 +162,7 @@ struct dst_entry *udp_tunnel6_dst_lookup(struct sk_buff= *skb, fl6.fl6_dport =3D dport; fl6.flowlabel =3D ip6_make_flowinfo(dsfield, key->label); =20 - dst =3D ipv6_stub->ipv6_dst_lookup_flow(net, sock->sk, &fl6, - NULL); + dst =3D ip6_dst_lookup_flow(net, sock->sk, &fl6, NULL); if (IS_ERR(dst)) { netdev_dbg(dev, "no route to %pI6\n", &fl6.daddr); return ERR_PTR(-ENETUNREACH); --=20 2.53.0 From nobody Fri Apr 3 01:28:24 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D716C3DB657 for ; Wed, 25 Mar 2026 12:11:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440695; cv=none; b=dJSn52eprPFiDJGuFJ2onm2hcTov8dY6x+DnZrB1RMguhEF4TLaLlJXUBJxq1z5cLMdSY8XkT3Fe/HWIpCqnmpxfQlILEOIzWixlhE1i9eybSYanLkLBkMMtZhM/0QobED8YADVHE1bCkhUtWZ41aeDBoGTN3ZB2Jf9pdnaUkYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440695; c=relaxed/simple; bh=zu3aLA0rvDaDrhmPPuqjpIE3CrfmdSxcAd9b1qb2ZYQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tznHJ3sh64Fohyn8QxVUuB3BGufHo0KLweuK5flv9YMvDQIjxHWiVUwMUtvrRI4+bpv8LK3bAvpx8VPBHKd1p4n3pVwJv/rMbOYLFFua7rrmf+PPSKt31sjyciDGI3zMsjC+hBTCabmZVspCiHVTxdIXjE6aeP7QHyuD//evoQg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 0ABA15BCD0; Wed, 25 Mar 2026 12:11:25 +0000 (UTC) Authentication-Results: smtp-out2.suse.de; none Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0407F443BE; Wed, 25 Mar 2026 12:11:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id mO2VOevQw2kbNgAAD6G6ig (envelope-from ); Wed, 25 Mar 2026 12:11:23 +0000 From: Fernando Fernandez Mancera To: netdev@vger.kernel.org Cc: Fernando Fernandez Mancera , =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= , Pablo Neira Ayuso , Florian Westphal , Phil Sutter , Nikolay Aleksandrov , Ido Schimmel , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-kernel@vger.kernel.org, bridge@lists.linux.dev Subject: [PATCH 11/11 net-next v5] netfilter: remove nf_ipv6_ops and use direct function calls Date: Wed, 25 Mar 2026 13:08:52 +0100 Message-ID: <20260325120928.15848-12-fmancera@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325120928.15848-1-fmancera@suse.de> References: <20260325120928.15848-1-fmancera@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 0ABA15BCD0 X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Spam-Score: -4.00 X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org As IPv6 is built-in only, nf_ipv6_ops can be removed completely as it is not longer necessary. Convert all nf_ipv6_ops usage to direct function calls instead. In addition, remove the ipv6_netfilter_init/fini() functions as they are not necessary any longer. Signed-off-by: Fernando Fernandez Mancera Tested-by: Ricardo B. Marli=C3=A8re --- include/linux/netfilter_ipv6.h | 102 ++---------------------------- net/bridge/br_netfilter_hooks.c | 12 +--- net/bridge/br_netfilter_ipv6.c | 7 +- net/ipv6/af_inet6.c | 6 -- net/ipv6/netfilter.c | 48 -------------- net/netfilter/core.c | 3 - net/netfilter/nf_nat_masquerade.c | 21 +----- net/netfilter/nfnetlink_queue.c | 22 +++++-- net/netfilter/utils.c | 1 - 9 files changed, 32 insertions(+), 190 deletions(-) diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h index 61aa48f46dd7..5ce45b6d890f 100644 --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h @@ -34,59 +34,13 @@ struct ip6_rt_info { struct nf_queue_entry; struct nf_bridge_frag_data; =20 -/* - * Hook functions for ipv6 to allow xt_* modules to be built-in even - * if IPv6 is a module. - */ -struct nf_ipv6_ops { -#if IS_MODULE(CONFIG_IPV6) - int (*chk_addr)(struct net *net, const struct in6_addr *addr, - const struct net_device *dev, int strict); - int (*route_me_harder)(struct net *net, struct sock *sk, struct sk_buff *= skb); - int (*dev_get_saddr)(struct net *net, const struct net_device *dev, - const struct in6_addr *daddr, unsigned int srcprefs, - struct in6_addr *saddr); - int (*route)(struct net *net, struct dst_entry **dst, struct flowi *fl, - bool strict); - u32 (*cookie_init_sequence)(const struct ipv6hdr *iph, - const struct tcphdr *th, u16 *mssp); - int (*cookie_v6_check)(const struct ipv6hdr *iph, - const struct tcphdr *th); -#endif - void (*route_input)(struct sk_buff *skb); - int (*fragment)(struct net *net, struct sock *sk, struct sk_buff *skb, - int (*output)(struct net *, struct sock *, struct sk_buff *)); - int (*reroute)(struct sk_buff *skb, const struct nf_queue_entry *entry); -#if IS_MODULE(CONFIG_IPV6) - int (*br_fragment)(struct net *net, struct sock *sk, - struct sk_buff *skb, - struct nf_bridge_frag_data *data, - int (*output)(struct net *, struct sock *sk, - const struct nf_bridge_frag_data *data, - struct sk_buff *)); -#endif -}; - #ifdef CONFIG_NETFILTER #include =20 -extern const struct nf_ipv6_ops __rcu *nf_ipv6_ops; -static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) -{ - return rcu_dereference(nf_ipv6_ops); -} - static inline int nf_ipv6_chk_addr(struct net *net, const struct in6_addr = *addr, const struct net_device *dev, int strict) { -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (!v6_ops) - return 1; - - return v6_ops->chk_addr(net, addr, dev, strict); -#elif IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) return ipv6_chk_addr(net, addr, dev, strict); #else return 1; @@ -99,15 +53,7 @@ int __nf_ip6_route(struct net *net, struct dst_entry **d= st, static inline int nf_ip6_route(struct net *net, struct dst_entry **dst, struct flowi *fl, bool strict) { -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6ops =3D nf_get_ipv6_ops(); - - if (v6ops) - return v6ops->route(net, dst, fl, strict); - - return -EHOSTUNREACH; -#endif -#if IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) return __nf_ip6_route(net, dst, fl, strict); #else return -EHOSTUNREACH; @@ -129,14 +75,7 @@ static inline int nf_br_ip6_fragment(struct net *net, s= truct sock *sk, const struct nf_bridge_frag_data *data, struct sk_buff *)) { -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (!v6_ops) - return 1; - - return v6_ops->br_fragment(net, sk, skb, data, output); -#elif IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) return br_ip6_fragment(net, sk, skb, data, output); #else return 1; @@ -147,14 +86,7 @@ int ip6_route_me_harder(struct net *net, struct sock *s= k, struct sk_buff *skb); =20 static inline int nf_ip6_route_me_harder(struct net *net, struct sock *sk,= struct sk_buff *skb) { -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (!v6_ops) - return -EHOSTUNREACH; - - return v6_ops->route_me_harder(net, sk, skb); -#elif IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) return ip6_route_me_harder(net, sk, skb); #else return -EHOSTUNREACH; @@ -165,15 +97,8 @@ static inline u32 nf_ipv6_cookie_init_sequence(const st= ruct ipv6hdr *iph, const struct tcphdr *th, u16 *mssp) { -#if IS_ENABLED(CONFIG_SYN_COOKIES) -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (v6_ops) - return v6_ops->cookie_init_sequence(iph, th, mssp); -#elif IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) && IS_ENABLED(CONFIG_SYN_COOKIES) return __cookie_v6_init_sequence(iph, th, mssp); -#endif #endif return 0; } @@ -181,15 +106,8 @@ static inline u32 nf_ipv6_cookie_init_sequence(const s= truct ipv6hdr *iph, static inline int nf_cookie_v6_check(const struct ipv6hdr *iph, const struct tcphdr *th) { -#if IS_ENABLED(CONFIG_SYN_COOKIES) -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (v6_ops) - return v6_ops->cookie_v6_check(iph, th); -#elif IS_BUILTIN(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6) && IS_ENABLED(CONFIG_SYN_COOKIES) return __cookie_v6_check(iph, th); -#endif #endif return 0; } @@ -198,14 +116,6 @@ __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned = int hook, unsigned int dataoff, u_int8_t protocol); =20 int nf_ip6_check_hbh_len(struct sk_buff *skb, u32 *plen); - -int ipv6_netfilter_init(void); -void ipv6_netfilter_fini(void); - -#else /* CONFIG_NETFILTER */ -static inline int ipv6_netfilter_init(void) { return 0; } -static inline void ipv6_netfilter_fini(void) { return; } -static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) { return NUL= L; } #endif /* CONFIG_NETFILTER */ =20 #endif /*__LINUX_IP6_NETFILTER_H*/ diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hook= s.c index 083e2fe96441..0ab1c94db4b9 100644 --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c @@ -32,6 +32,7 @@ =20 #include #include +#include #include #include #include @@ -890,7 +891,6 @@ static int br_nf_dev_queue_xmit(struct net *net, struct= sock *sk, struct sk_buff } if (IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) && skb->protocol =3D=3D htons(ETH_P_IPV6)) { - const struct nf_ipv6_ops *v6ops =3D nf_get_ipv6_ops(); struct brnf_frag_data *data; =20 if (br_validate_ipv6(net, skb)) @@ -906,15 +906,9 @@ static int br_nf_dev_queue_xmit(struct net *net, struc= t sock *sk, struct sk_buff skb_copy_from_linear_data_offset(skb, -data->size, data->mac, data->size); =20 - if (v6ops) { - ret =3D v6ops->fragment(net, sk, skb, br_nf_push_frag_xmit); - local_unlock_nested_bh(&brnf_frag_data_storage.bh_lock); - return ret; - } + ret =3D ip6_fragment(net, sk, skb, br_nf_push_frag_xmit); local_unlock_nested_bh(&brnf_frag_data_storage.bh_lock); - - kfree_skb(skb); - return -EMSGSIZE; + return ret; } nf_bridge_info_free(skb); return br_dev_queue_push_xmit(net, sk, skb); diff --git a/net/bridge/br_netfilter_ipv6.c b/net/bridge/br_netfilter_ipv6.c index 76ce70b4e7f3..d8548428929e 100644 --- a/net/bridge/br_netfilter_ipv6.c +++ b/net/bridge/br_netfilter_ipv6.c @@ -30,6 +30,7 @@ =20 #include #include +#include #include #include #include @@ -95,15 +96,13 @@ br_nf_ipv6_daddr_was_changed(const struct sk_buff *skb, =20 /* PF_BRIDGE/PRE_ROUTING: Undo the changes made for ip6tables * PREROUTING and continue the bridge PRE_ROUTING hook. See comment - * for br_nf_pre_routing_finish(), same logic is used here but - * equivalent IPv6 function ip6_route_input() called indirectly. + * for br_nf_pre_routing_finish(), same logic is used here. */ static int br_nf_pre_routing_finish_ipv6(struct net *net, struct sock *sk,= struct sk_buff *skb) { struct nf_bridge_info *nf_bridge =3D nf_bridge_info_get(skb); struct rtable *rt; struct net_device *dev =3D skb->dev, *br_indev; - const struct nf_ipv6_ops *v6ops =3D nf_get_ipv6_ops(); =20 br_indev =3D nf_bridge_get_physindev(skb, net); if (!br_indev) { @@ -120,7 +119,7 @@ static int br_nf_pre_routing_finish_ipv6(struct net *ne= t, struct sock *sk, struc nf_bridge->in_prerouting =3D 0; if (br_nf_ipv6_daddr_was_changed(skb, nf_bridge)) { skb_dst_drop(skb); - v6ops->route_input(skb); + ip6_route_input(skb); =20 if (skb_dst(skb)->error) { kfree_skb(skb); diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 33abd8d8cd7d..ee341a8254bf 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -38,7 +38,6 @@ #include #include #include -#include =20 #include #include @@ -1066,9 +1065,6 @@ static int __init inet6_init(void) if (err) goto igmp_fail; =20 - err =3D ipv6_netfilter_init(); - if (err) - goto netfilter_fail; /* Create /proc/foo6 entries. */ #ifdef CONFIG_PROC_FS err =3D -ENOMEM; @@ -1199,8 +1195,6 @@ static int __init inet6_init(void) raw6_proc_exit(); proc_raw6_fail: #endif - ipv6_netfilter_fini(); -netfilter_fail: igmp6_cleanup(); igmp_fail: ndisc_cleanup(); diff --git a/net/ipv6/netfilter.c b/net/ipv6/netfilter.c index c3dc90dfab80..6d80f85e55fa 100644 --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c @@ -86,21 +86,6 @@ int ip6_route_me_harder(struct net *net, struct sock *sk= _partial, struct sk_buff } EXPORT_SYMBOL(ip6_route_me_harder); =20 -static int nf_ip6_reroute(struct sk_buff *skb, - const struct nf_queue_entry *entry) -{ - struct ip6_rt_info *rt_info =3D nf_queue_entry_reroute(entry); - - if (entry->state.hook =3D=3D NF_INET_LOCAL_OUT) { - const struct ipv6hdr *iph =3D ipv6_hdr(skb); - if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) || - !ipv6_addr_equal(&iph->saddr, &rt_info->saddr) || - skb->mark !=3D rt_info->mark) - return ip6_route_me_harder(entry->state.net, entry->state.sk, skb); - } - return 0; -} - int __nf_ip6_route(struct net *net, struct dst_entry **dst, struct flowi *fl, bool strict) { @@ -243,36 +228,3 @@ int br_ip6_fragment(struct net *net, struct sock *sk, = struct sk_buff *skb, return 0; } EXPORT_SYMBOL_GPL(br_ip6_fragment); - -static const struct nf_ipv6_ops ipv6ops =3D { -#if IS_MODULE(CONFIG_IPV6) - .chk_addr =3D ipv6_chk_addr, - .route_me_harder =3D ip6_route_me_harder, - .dev_get_saddr =3D ipv6_dev_get_saddr, - .route =3D __nf_ip6_route, -#if IS_ENABLED(CONFIG_SYN_COOKIES) - .cookie_init_sequence =3D __cookie_v6_init_sequence, - .cookie_v6_check =3D __cookie_v6_check, -#endif -#endif - .route_input =3D ip6_route_input, - .fragment =3D ip6_fragment, - .reroute =3D nf_ip6_reroute, -#if IS_MODULE(CONFIG_IPV6) - .br_fragment =3D br_ip6_fragment, -#endif -}; - -int __init ipv6_netfilter_init(void) -{ - RCU_INIT_POINTER(nf_ipv6_ops, &ipv6ops); - return 0; -} - -/* This can be called from inet6_init() on errors, so it cannot - * be marked __exit. -DaveM - */ -void ipv6_netfilter_fini(void) -{ - RCU_INIT_POINTER(nf_ipv6_ops, NULL); -} diff --git a/net/netfilter/core.c b/net/netfilter/core.c index d5df44ea9e7b..675a1034b340 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c @@ -27,9 +27,6 @@ =20 #include "nf_internals.h" =20 -const struct nf_ipv6_ops __rcu *nf_ipv6_ops __read_mostly; -EXPORT_SYMBOL_GPL(nf_ipv6_ops); - #ifdef CONFIG_JUMP_LABEL struct static_key nf_hooks_needed[NFPROTO_NUMPROTO][NF_MAX_HOOKS]; EXPORT_SYMBOL(nf_hooks_needed); diff --git a/net/netfilter/nf_nat_masquerade.c b/net/netfilter/nf_nat_masqu= erade.c index a5a23c03fda9..4de6e0a51701 100644 --- a/net/netfilter/nf_nat_masquerade.c +++ b/net/netfilter/nf_nat_masquerade.c @@ -220,23 +220,6 @@ static struct notifier_block masq_inet_notifier =3D { }; =20 #if IS_ENABLED(CONFIG_IPV6) -static int -nat_ipv6_dev_get_saddr(struct net *net, const struct net_device *dev, - const struct in6_addr *daddr, unsigned int srcprefs, - struct in6_addr *saddr) -{ -#ifdef CONFIG_IPV6_MODULE - const struct nf_ipv6_ops *v6_ops =3D nf_get_ipv6_ops(); - - if (!v6_ops) - return -EHOSTUNREACH; - - return v6_ops->dev_get_saddr(net, dev, daddr, srcprefs, saddr); -#else - return ipv6_dev_get_saddr(net, dev, daddr, srcprefs, saddr); -#endif -} - unsigned int nf_nat_masquerade_ipv6(struct sk_buff *skb, const struct nf_nat_range2 *ra= nge, const struct net_device *out) @@ -251,8 +234,8 @@ nf_nat_masquerade_ipv6(struct sk_buff *skb, const struc= t nf_nat_range2 *range, WARN_ON(!(ct && (ctinfo =3D=3D IP_CT_NEW || ctinfo =3D=3D IP_CT_RELATED || ctinfo =3D=3D IP_CT_RELATED_REPLY))); =20 - if (nat_ipv6_dev_get_saddr(nf_ct_net(ct), out, - &ipv6_hdr(skb)->daddr, 0, &src) < 0) + if (ipv6_dev_get_saddr(nf_ct_net(ct), out, + &ipv6_hdr(skb)->daddr, 0, &src) < 0) return NF_DROP; =20 nat =3D nf_ct_nat_ext_add(ct); diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queu= e.c index a91ae07db059..2aa2380d976a 100644 --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c @@ -356,9 +356,25 @@ static int nf_ip_reroute(struct sk_buff *skb, const st= ruct nf_queue_entry *entry return 0; } =20 +static int nf_ip6_reroute(struct sk_buff *skb, + const struct nf_queue_entry *entry) +{ + struct ip6_rt_info *rt_info =3D nf_queue_entry_reroute(entry); + + if (entry->state.hook =3D=3D NF_INET_LOCAL_OUT) { + const struct ipv6hdr *iph =3D ipv6_hdr(skb); + + if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) || + !ipv6_addr_equal(&iph->saddr, &rt_info->saddr) || + skb->mark !=3D rt_info->mark) + return nf_ip6_route_me_harder(entry->state.net, + entry->state.sk, skb); + } + return 0; +} + static int nf_reroute(struct sk_buff *skb, struct nf_queue_entry *entry) { - const struct nf_ipv6_ops *v6ops; int ret =3D 0; =20 switch (entry->state.pf) { @@ -366,9 +382,7 @@ static int nf_reroute(struct sk_buff *skb, struct nf_qu= eue_entry *entry) ret =3D nf_ip_reroute(skb, entry); break; case AF_INET6: - v6ops =3D rcu_dereference(nf_ipv6_ops); - if (v6ops) - ret =3D v6ops->reroute(skb, entry); + ret =3D nf_ip6_reroute(skb, entry); break; } return ret; diff --git a/net/netfilter/utils.c b/net/netfilter/utils.c index 008419db815a..29c4dcc362c7 100644 --- a/net/netfilter/utils.c +++ b/net/netfilter/utils.c @@ -163,7 +163,6 @@ EXPORT_SYMBOL_GPL(nf_checksum_partial); int nf_route(struct net *net, struct dst_entry **dst, struct flowi *fl, bool strict, unsigned short family) { - const struct nf_ipv6_ops *v6ops __maybe_unused; int ret =3D 0; =20 switch (family) { --=20 2.53.0