Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217802/?format=api
{ "id": 2217802, "url": "http://patchwork.ozlabs.org/api/patches/2217802/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260330151935.5828-1-fmancera@suse.de/", "project": { "id": 26, "url": "http://patchwork.ozlabs.org/api/projects/26/?format=api", "name": "Netfilter Development", "link_name": "netfilter-devel", "list_id": "netfilter-devel.vger.kernel.org", "list_email": "netfilter-devel@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260330151935.5828-1-fmancera@suse.de>", "list_archive_url": null, "date": "2026-03-30T15:19:34", "name": "[1/2,nf-next] netfilter: conntrack: remove UDP-Lite conntrack support", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "74098c310010ea16facd002de0615a18e51721d7", "submitter": { "id": 90904, "url": "http://patchwork.ozlabs.org/api/people/90904/?format=api", "name": "Fernando Fernandez Mancera", "email": "fmancera@suse.de" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260330151935.5828-1-fmancera@suse.de/mbox/", "series": [ { "id": 498056, "url": "http://patchwork.ozlabs.org/api/series/498056/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=498056", "date": "2026-03-30T15:19:35", "name": "[1/2,nf-next] netfilter: conntrack: remove UDP-Lite conntrack support", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498056/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217802/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217802/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <netfilter-devel+bounces-11502-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "netfilter-devel@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=QMOPEMml;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=BwoYpsxZ;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=iascoNTo;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=DeGSQ9E7;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-11502-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.b=\"QMOPEMml\";\n\tdkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de\n header.b=\"BwoYpsxZ\";\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.b=\"iascoNTo\";\n\tdkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de\n header.b=\"DeGSQ9E7\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=195.135.223.130", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=suse.de", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=suse.de", "smtp-out1.suse.de;\n\tnone" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fkwJ12chxz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 02:33:21 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 5A839305F3ED\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 15:19:53 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1AFBD340DAB;\n\tMon, 30 Mar 2026 15:19:52 +0000 (UTC)", "from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id C531833FE12\n\tfor <netfilter-devel@vger.kernel.org>; Mon, 30 Mar 2026 15:19:49 +0000 (UTC)", "from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby smtp-out1.suse.de (Postfix) with ESMTPS id ECB6B4D20F;\n\tMon, 30 Mar 2026 15:19:47 +0000 (UTC)", "from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7E32D4A0A2;\n\tMon, 30 Mar 2026 15:19:47 +0000 (UTC)", "from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n\tby imap1.dmz-prg2.suse.org with ESMTPSA\n\tid 6Z2lG5OUymn8EQAAD6G6ig\n\t(envelope-from <fmancera@suse.de>); Mon, 30 Mar 2026 15:19:47 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774883991; cv=none;\n b=ONE+x8F/dRvEGSOrwVGfTxVjYU4BhKpIos/t13tLOKQCTYwfChgLPff9NslQB/KBbbM+yCO+/HdHwji3iDuNXChcQFAHrzUkCM88Z0W+fCuah+Xe6kF+Xs0EZD29EEoVmEa+5mz0F/xdvMqkWLFVuteJdF3cDUXr+6c87o1jtP0=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774883991; c=relaxed/simple;\n\tbh=CyTIFKIJvMHzxrjnSBhz+Zbe1eHRGjdFPAXaOVmGj90=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=APQOQGBr5G/bmkBRP/xLfvP7jQ0xwT7NUT4j3D4lckfmhoaGzo9uDWOcStXDz5/aDZvOuyUXIE4IjtiZin4gldA8BjpAOJkOw1ijI9IWsGxl/k6dsBAKglTRrlaZw4PQL2/pjdJJ8lGRePxFddDI4Kh+T6Nzj/ClHWkyw2dO8kQ=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=suse.de;\n spf=pass smtp.mailfrom=suse.de;\n dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.b=QMOPEMml;\n dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de\n header.b=BwoYpsxZ;\n dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.b=iascoNTo;\n dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de\n header.b=DeGSQ9E7; arc=none smtp.client-ip=195.135.223.130", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n\tt=1774883988;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding;\n\tbh=A5rXH0Re9hSzJY9t2thgtUcE5GPd6Agxz4wt3QB/xOo=;\n\tb=QMOPEMmlUdxpZMcxkjdWoiTsWg8UsvarB2U5YmciYF1yC3FT0558MUc1dVmm5xu62AULRu\n\t4OcmahiGtrxqyoDDzMnbFFJxtL9YXO3gxDIZkIIOY9+8yvyedhtrNtO37BYSHBWubAR7YY\n\tWuwGM9OgJRJCBTMzYQzxWPprm6PNH0k=", "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n\ts=susede2_ed25519; t=1774883988;\n\th=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding;\n\tbh=A5rXH0Re9hSzJY9t2thgtUcE5GPd6Agxz4wt3QB/xOo=;\n\tb=BwoYpsxZ5WEKrx/X2FCb/H+eu3pfnybQvvKPUts58btUK9JR3KojUZlsbJIs9zQPMdeh1S\n\tqD9Hkj8m06p9pTAQ==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n\tt=1774883987;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding;\n\tbh=A5rXH0Re9hSzJY9t2thgtUcE5GPd6Agxz4wt3QB/xOo=;\n\tb=iascoNTosSbFFT82xiDKmqFhEmbAjUCMElBwNhyFTReJM9VBApUUJMLILswwJ6UCl3UD/S\n\tmvdOC80DCACsstldnaT6/L/LdDyonSSKG+iNXRFnjdvmcfQlGnl+PZfwpBS6y2f5Uqb5pC\n\ta+tBJlRhHSsW8HNIbxKzd7rsAoMrVBI=", "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n\ts=susede2_ed25519; t=1774883987;\n\th=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding;\n\tbh=A5rXH0Re9hSzJY9t2thgtUcE5GPd6Agxz4wt3QB/xOo=;\n\tb=DeGSQ9E7hrqywLkinRmrD8GNZO+iKaZ6HE8sooAz4c7vHQ2E3zdxENqmCF4p6xgE6yR+fo\n\tIJ6TT+7CTQZpIGBA==" ], "From": "Fernando Fernandez Mancera <fmancera@suse.de>", "To": "netfilter-devel@vger.kernel.org", "Cc": "coreteam@netfilter.org,\n\tphil@nwl.cc,\n\tfw@strlen.de,\n\tpablo@netfilter.org,\n\tFernando Fernandez Mancera <fmancera@suse.de>", "Subject": "[PATCH 1/2 nf-next] netfilter: conntrack: remove UDP-Lite conntrack\n support", "Date": "Mon, 30 Mar 2026 17:19:34 +0200", "Message-ID": "<20260330151935.5828-1-fmancera@suse.de>", "X-Mailer": "git-send-email 2.51.0", "Precedence": "bulk", "X-Mailing-List": "netfilter-devel@vger.kernel.org", "List-Id": "<netfilter-devel.vger.kernel.org>", "List-Subscribe": "<mailto:netfilter-devel+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:netfilter-devel+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Spam-Score": "-2.80", "X-Spam-Level": "", "X-Spamd-Result": "default: False [-2.80 / 50.00];\n\tBAYES_HAM(-3.00)[100.00%];\n\tMID_CONTAINS_FROM(1.00)[];\n\tNEURAL_HAM_LONG(-1.00)[-1.000];\n\tR_MISSING_CHARSET(0.50)[];\n\tNEURAL_HAM_SHORT(-0.20)[-1.000];\n\tMIME_GOOD(-0.10)[text/plain];\n\tRCVD_COUNT_TWO(0.00)[2];\n\tFUZZY_RATELIMITED(0.00)[rspamd.com];\n\tARC_NA(0.00)[];\n\tMIME_TRACE(0.00)[0:+];\n\tTO_DN_SOME(0.00)[];\n\tDKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n\tURIBL_BLOCKED(0.00)[imap1.dmz-prg2.suse.org:helo,suse.de:mid,suse.de:email];\n\tTO_MATCH_ENVRCPT_ALL(0.00)[];\n\tFROM_HAS_DN(0.00)[];\n\tRCVD_VIA_SMTP_AUTH(0.00)[];\n\tFROM_EQ_ENVFROM(0.00)[];\n\tRCVD_TLS_ALL(0.00)[];\n\tRCPT_COUNT_FIVE(0.00)[6];\n\tDBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo]", "X-Spam-Flag": "NO" }, "content": "UDP-Lite (RFC 3828) socket support was recently retired from the core\nnetworking stack. As a follow-up of that, drop the connection tracker\nand NAT support for UDP-Lite in Netfilter.\n\nThis patch removes CONFIG_NF_CT_PROTO_UDPLITE and scrubs UDP-Lite\nawareness from the conntrack core, NAT core, nft_ct, and ctnetlink.\nPlease note that stateless packet inspection, matching, ipsets or\nlogging support for IPPROTO_UDPLITE is preserved.\n\nAs conntrack no longer extracts UDP-Lite ports or tracks its L4 state,\nwhen performing NAT the UDP-Lite checksum cannot be updated anymore.\nThat is an expected and acceptable consequence of removing UDP-Lite\nconntrack module.\n\nSigned-off-by: Fernando Fernandez Mancera <fmancera@suse.de>\n---\n .../net/netfilter/ipv4/nf_conntrack_ipv4.h | 3 -\n include/net/netfilter/nf_conntrack_l4proto.h | 5 -\n net/netfilter/Kconfig | 11 --\n net/netfilter/nf_conntrack_core.c | 8 --\n net/netfilter/nf_conntrack_proto.c | 3 -\n net/netfilter/nf_conntrack_proto_udp.c | 108 ------------------\n net/netfilter/nf_conntrack_standalone.c | 2 -\n net/netfilter/nf_nat_core.c | 6 -\n net/netfilter/nf_nat_proto.c | 20 ----\n net/netfilter/nfnetlink_cttimeout.c | 1 -\n net/netfilter/nft_ct.c | 1 -\n 11 files changed, 168 deletions(-)", "diff": "diff --git a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h\nindex 8d65ffbf57de..b39417ad955e 100644\n--- a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h\n+++ b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h\n@@ -16,9 +16,6 @@ extern const struct nf_conntrack_l4proto nf_conntrack_l4proto_icmp;\n #ifdef CONFIG_NF_CT_PROTO_SCTP\n extern const struct nf_conntrack_l4proto nf_conntrack_l4proto_sctp;\n #endif\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-extern const struct nf_conntrack_l4proto nf_conntrack_l4proto_udplite;\n-#endif\n #ifdef CONFIG_NF_CT_PROTO_GRE\n extern const struct nf_conntrack_l4proto nf_conntrack_l4proto_gre;\n #endif\ndiff --git a/include/net/netfilter/nf_conntrack_l4proto.h b/include/net/netfilter/nf_conntrack_l4proto.h\nindex cd5020835a6d..91f5254ad6fa 100644\n--- a/include/net/netfilter/nf_conntrack_l4proto.h\n+++ b/include/net/netfilter/nf_conntrack_l4proto.h\n@@ -107,11 +107,6 @@ int nf_conntrack_udp_packet(struct nf_conn *ct,\n \t\t\t unsigned int dataoff,\n \t\t\t enum ip_conntrack_info ctinfo,\n \t\t\t const struct nf_hook_state *state);\n-int nf_conntrack_udplite_packet(struct nf_conn *ct,\n-\t\t\t\tstruct sk_buff *skb,\n-\t\t\t\tunsigned int dataoff,\n-\t\t\t\tenum ip_conntrack_info ctinfo,\n-\t\t\t\tconst struct nf_hook_state *state);\n int nf_conntrack_tcp_packet(struct nf_conn *ct,\n \t\t\t struct sk_buff *skb,\n \t\t\t unsigned int dataoff,\ndiff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig\nindex 6cdc994fdc8a..276f4652596a 100644\n--- a/net/netfilter/Kconfig\n+++ b/net/netfilter/Kconfig\n@@ -209,17 +209,6 @@ config NF_CT_PROTO_SCTP\n \n \t If unsure, say Y.\n \n-config NF_CT_PROTO_UDPLITE\n-\tbool 'UDP-Lite protocol connection tracking support'\n-\tdepends on NETFILTER_ADVANCED\n-\tdefault y\n-\thelp\n-\t With this option enabled, the layer 3 independent connection\n-\t tracking code will be able to do state tracking on UDP-Lite\n-\t connections.\n-\n-\t If unsure, say Y.\n-\n config NF_CONNTRACK_AMANDA\n \ttristate \"Amanda backup protocol support\"\n \tdepends on NETFILTER_ADVANCED\ndiff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c\nindex 27ce5fda8993..b08189226320 100644\n--- a/net/netfilter/nf_conntrack_core.c\n+++ b/net/netfilter/nf_conntrack_core.c\n@@ -323,9 +323,6 @@ nf_ct_get_tuple(const struct sk_buff *skb,\n #endif\n \tcase IPPROTO_TCP:\n \tcase IPPROTO_UDP:\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-\tcase IPPROTO_UDPLITE:\n-#endif\n #ifdef CONFIG_NF_CT_PROTO_SCTP\n \tcase IPPROTO_SCTP:\n #endif\n@@ -1987,11 +1984,6 @@ static int nf_conntrack_handle_packet(struct nf_conn *ct,\n \tcase IPPROTO_ICMPV6:\n \t\treturn nf_conntrack_icmpv6_packet(ct, skb, ctinfo, state);\n #endif\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-\tcase IPPROTO_UDPLITE:\n-\t\treturn nf_conntrack_udplite_packet(ct, skb, dataoff,\n-\t\t\t\t\t\t ctinfo, state);\n-#endif\n #ifdef CONFIG_NF_CT_PROTO_SCTP\n \tcase IPPROTO_SCTP:\n \t\treturn nf_conntrack_sctp_packet(ct, skb, dataoff,\ndiff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c\nindex bc1d96686b9c..50ddd3d613e1 100644\n--- a/net/netfilter/nf_conntrack_proto.c\n+++ b/net/netfilter/nf_conntrack_proto.c\n@@ -103,9 +103,6 @@ const struct nf_conntrack_l4proto *nf_ct_l4proto_find(u8 l4proto)\n #ifdef CONFIG_NF_CT_PROTO_SCTP\n \tcase IPPROTO_SCTP: return &nf_conntrack_l4proto_sctp;\n #endif\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-\tcase IPPROTO_UDPLITE: return &nf_conntrack_l4proto_udplite;\n-#endif\n #ifdef CONFIG_NF_CT_PROTO_GRE\n \tcase IPPROTO_GRE: return &nf_conntrack_l4proto_gre;\n #endif\ndiff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c\nindex 0030fbe8885c..cc9b7e5e1935 100644\n--- a/net/netfilter/nf_conntrack_proto_udp.c\n+++ b/net/netfilter/nf_conntrack_proto_udp.c\n@@ -129,91 +129,6 @@ int nf_conntrack_udp_packet(struct nf_conn *ct,\n \treturn NF_ACCEPT;\n }\n \n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-static void udplite_error_log(const struct sk_buff *skb,\n-\t\t\t const struct nf_hook_state *state,\n-\t\t\t const char *msg)\n-{\n-\tnf_l4proto_log_invalid(skb, state, IPPROTO_UDPLITE, \"%s\", msg);\n-}\n-\n-static bool udplite_error(struct sk_buff *skb,\n-\t\t\t unsigned int dataoff,\n-\t\t\t const struct nf_hook_state *state)\n-{\n-\tunsigned int udplen = skb->len - dataoff;\n-\tconst struct udphdr *hdr;\n-\tstruct udphdr _hdr;\n-\tunsigned int cscov;\n-\n-\t/* Header is too small? */\n-\thdr = skb_header_pointer(skb, dataoff, sizeof(_hdr), &_hdr);\n-\tif (!hdr) {\n-\t\tudplite_error_log(skb, state, \"short packet\");\n-\t\treturn true;\n-\t}\n-\n-\tcscov = ntohs(hdr->len);\n-\tif (cscov == 0) {\n-\t\tcscov = udplen;\n-\t} else if (cscov < sizeof(*hdr) || cscov > udplen) {\n-\t\tudplite_error_log(skb, state, \"invalid checksum coverage\");\n-\t\treturn true;\n-\t}\n-\n-\t/* UDPLITE mandates checksums */\n-\tif (!hdr->check) {\n-\t\tudplite_error_log(skb, state, \"checksum missing\");\n-\t\treturn true;\n-\t}\n-\n-\t/* Checksum invalid? Ignore. */\n-\tif (state->hook == NF_INET_PRE_ROUTING &&\n-\t state->net->ct.sysctl_checksum &&\n-\t nf_checksum_partial(skb, state->hook, dataoff, cscov, IPPROTO_UDP,\n-\t\t\t\tstate->pf)) {\n-\t\tudplite_error_log(skb, state, \"bad checksum\");\n-\t\treturn true;\n-\t}\n-\n-\treturn false;\n-}\n-\n-/* Returns verdict for packet, and may modify conntracktype */\n-int nf_conntrack_udplite_packet(struct nf_conn *ct,\n-\t\t\t\tstruct sk_buff *skb,\n-\t\t\t\tunsigned int dataoff,\n-\t\t\t\tenum ip_conntrack_info ctinfo,\n-\t\t\t\tconst struct nf_hook_state *state)\n-{\n-\tunsigned int *timeouts;\n-\n-\tif (udplite_error(skb, dataoff, state))\n-\t\treturn -NF_ACCEPT;\n-\n-\ttimeouts = nf_ct_timeout_lookup(ct);\n-\tif (!timeouts)\n-\t\ttimeouts = udp_get_timeouts(nf_ct_net(ct));\n-\n-\t/* If we've seen traffic both ways, this is some kind of UDP\n-\t stream. Extend timeout. */\n-\tif (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {\n-\t\tnf_ct_refresh_acct(ct, ctinfo, skb,\n-\t\t\t\t timeouts[UDP_CT_REPLIED]);\n-\n-\t\tif (unlikely((ct->status & IPS_NAT_CLASH)))\n-\t\t\treturn NF_ACCEPT;\n-\n-\t\t/* Also, more likely to be important, and not a probe */\n-\t\tif (!test_and_set_bit(IPS_ASSURED_BIT, &ct->status))\n-\t\t\tnf_conntrack_event_cache(IPCT_ASSURED, ct);\n-\t} else {\n-\t\tnf_ct_refresh_acct(ct, ctinfo, skb, timeouts[UDP_CT_UNREPLIED]);\n-\t}\n-\treturn NF_ACCEPT;\n-}\n-#endif\n-\n #ifdef CONFIG_NF_CONNTRACK_TIMEOUT\n \n #include <linux/netfilter/nfnetlink.h>\n@@ -299,26 +214,3 @@ const struct nf_conntrack_l4proto nf_conntrack_l4proto_udp =\n \t},\n #endif /* CONFIG_NF_CONNTRACK_TIMEOUT */\n };\n-\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-const struct nf_conntrack_l4proto nf_conntrack_l4proto_udplite =\n-{\n-\t.l4proto\t\t= IPPROTO_UDPLITE,\n-\t.allow_clash\t\t= true,\n-#if IS_ENABLED(CONFIG_NF_CT_NETLINK)\n-\t.tuple_to_nlattr\t= nf_ct_port_tuple_to_nlattr,\n-\t.nlattr_to_tuple\t= nf_ct_port_nlattr_to_tuple,\n-\t.nlattr_tuple_size\t= nf_ct_port_nlattr_tuple_size,\n-\t.nla_policy\t\t= nf_ct_port_nla_policy,\n-#endif\n-#ifdef CONFIG_NF_CONNTRACK_TIMEOUT\n-\t.ctnl_timeout\t\t= {\n-\t\t.nlattr_to_obj\t= udp_timeout_nlattr_to_obj,\n-\t\t.obj_to_nlattr\t= udp_timeout_obj_to_nlattr,\n-\t\t.nlattr_max\t= CTA_TIMEOUT_UDP_MAX,\n-\t\t.obj_size\t= sizeof(unsigned int) * CTA_TIMEOUT_UDP_MAX,\n-\t\t.nla_policy\t= udp_timeout_nla_policy,\n-\t},\n-#endif /* CONFIG_NF_CONNTRACK_TIMEOUT */\n-};\n-#endif\ndiff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c\nindex 207b240b14e5..be2953c7d702 100644\n--- a/net/netfilter/nf_conntrack_standalone.c\n+++ b/net/netfilter/nf_conntrack_standalone.c\n@@ -61,7 +61,6 @@ print_tuple(struct seq_file *s, const struct nf_conntrack_tuple *tuple,\n \t\t\t ntohs(tuple->src.u.tcp.port),\n \t\t\t ntohs(tuple->dst.u.tcp.port));\n \t\tbreak;\n-\tcase IPPROTO_UDPLITE:\n \tcase IPPROTO_UDP:\n \t\tseq_printf(s, \"sport=%hu dport=%hu \",\n \t\t\t ntohs(tuple->src.u.udp.port),\n@@ -277,7 +276,6 @@ static const char* l4proto_name(u16 proto)\n \tcase IPPROTO_UDP: return \"udp\";\n \tcase IPPROTO_GRE: return \"gre\";\n \tcase IPPROTO_SCTP: return \"sctp\";\n-\tcase IPPROTO_UDPLITE: return \"udplite\";\n \tcase IPPROTO_ICMPV6: return \"icmpv6\";\n \t}\n \ndiff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c\nindex 3b5434e4ec9c..83b2b5e9759a 100644\n--- a/net/netfilter/nf_nat_core.c\n+++ b/net/netfilter/nf_nat_core.c\n@@ -68,7 +68,6 @@ static void nf_nat_ipv4_decode_session(struct sk_buff *skb,\n \t\tfl4->daddr = t->dst.u3.ip;\n \t\tif (t->dst.protonum == IPPROTO_TCP ||\n \t\t t->dst.protonum == IPPROTO_UDP ||\n-\t\t t->dst.protonum == IPPROTO_UDPLITE ||\n \t\t t->dst.protonum == IPPROTO_SCTP)\n \t\t\tfl4->fl4_dport = t->dst.u.all;\n \t}\n@@ -79,7 +78,6 @@ static void nf_nat_ipv4_decode_session(struct sk_buff *skb,\n \t\tfl4->saddr = t->src.u3.ip;\n \t\tif (t->dst.protonum == IPPROTO_TCP ||\n \t\t t->dst.protonum == IPPROTO_UDP ||\n-\t\t t->dst.protonum == IPPROTO_UDPLITE ||\n \t\t t->dst.protonum == IPPROTO_SCTP)\n \t\t\tfl4->fl4_sport = t->src.u.all;\n \t}\n@@ -99,7 +97,6 @@ static void nf_nat_ipv6_decode_session(struct sk_buff *skb,\n \t\tfl6->daddr = t->dst.u3.in6;\n \t\tif (t->dst.protonum == IPPROTO_TCP ||\n \t\t t->dst.protonum == IPPROTO_UDP ||\n-\t\t t->dst.protonum == IPPROTO_UDPLITE ||\n \t\t t->dst.protonum == IPPROTO_SCTP)\n \t\t\tfl6->fl6_dport = t->dst.u.all;\n \t}\n@@ -110,7 +107,6 @@ static void nf_nat_ipv6_decode_session(struct sk_buff *skb,\n \t\tfl6->saddr = t->src.u3.in6;\n \t\tif (t->dst.protonum == IPPROTO_TCP ||\n \t\t t->dst.protonum == IPPROTO_UDP ||\n-\t\t t->dst.protonum == IPPROTO_UDPLITE ||\n \t\t t->dst.protonum == IPPROTO_SCTP)\n \t\t\tfl6->fl6_sport = t->src.u.all;\n \t}\n@@ -415,7 +411,6 @@ static bool l4proto_in_range(const struct nf_conntrack_tuple *tuple,\n \tcase IPPROTO_GRE: /* all fall though */\n \tcase IPPROTO_TCP:\n \tcase IPPROTO_UDP:\n-\tcase IPPROTO_UDPLITE:\n \tcase IPPROTO_SCTP:\n \t\tif (maniptype == NF_NAT_MANIP_SRC)\n \t\t\tport = tuple->src.u.all;\n@@ -612,7 +607,6 @@ static void nf_nat_l4proto_unique_tuple(struct nf_conntrack_tuple *tuple,\n \t\tgoto find_free_id;\n #endif\n \tcase IPPROTO_UDP:\n-\tcase IPPROTO_UDPLITE:\n \tcase IPPROTO_TCP:\n \tcase IPPROTO_SCTP:\n \t\tif (maniptype == NF_NAT_MANIP_SRC)\ndiff --git a/net/netfilter/nf_nat_proto.c b/net/netfilter/nf_nat_proto.c\nindex 97c0f841fc96..07f51fe75fbe 100644\n--- a/net/netfilter/nf_nat_proto.c\n+++ b/net/netfilter/nf_nat_proto.c\n@@ -79,23 +79,6 @@ static bool udp_manip_pkt(struct sk_buff *skb,\n \treturn true;\n }\n \n-static bool udplite_manip_pkt(struct sk_buff *skb,\n-\t\t\t unsigned int iphdroff, unsigned int hdroff,\n-\t\t\t const struct nf_conntrack_tuple *tuple,\n-\t\t\t enum nf_nat_manip_type maniptype)\n-{\n-#ifdef CONFIG_NF_CT_PROTO_UDPLITE\n-\tstruct udphdr *hdr;\n-\n-\tif (skb_ensure_writable(skb, hdroff + sizeof(*hdr)))\n-\t\treturn false;\n-\n-\thdr = (struct udphdr *)(skb->data + hdroff);\n-\t__udp_manip_pkt(skb, iphdroff, hdr, tuple, maniptype, true);\n-#endif\n-\treturn true;\n-}\n-\n static bool\n sctp_manip_pkt(struct sk_buff *skb,\n \t unsigned int iphdroff, unsigned int hdroff,\n@@ -287,9 +270,6 @@ static bool l4proto_manip_pkt(struct sk_buff *skb,\n \tcase IPPROTO_UDP:\n \t\treturn udp_manip_pkt(skb, iphdroff, hdroff,\n \t\t\t\t tuple, maniptype);\n-\tcase IPPROTO_UDPLITE:\n-\t\treturn udplite_manip_pkt(skb, iphdroff, hdroff,\n-\t\t\t\t\t tuple, maniptype);\n \tcase IPPROTO_SCTP:\n \t\treturn sctp_manip_pkt(skb, iphdroff, hdroff,\n \t\t\t\t tuple, maniptype);\ndiff --git a/net/netfilter/nfnetlink_cttimeout.c b/net/netfilter/nfnetlink_cttimeout.c\nindex fd8652aa7e88..dca6826af7de 100644\n--- a/net/netfilter/nfnetlink_cttimeout.c\n+++ b/net/netfilter/nfnetlink_cttimeout.c\n@@ -457,7 +457,6 @@ static int cttimeout_default_get(struct sk_buff *skb,\n \t\ttimeouts = nf_tcp_pernet(info->net)->timeouts;\n \t\tbreak;\n \tcase IPPROTO_UDP:\n-\tcase IPPROTO_UDPLITE:\n \t\ttimeouts = nf_udp_pernet(info->net)->timeouts;\n \t\tbreak;\n \tcase IPPROTO_ICMPV6:\ndiff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c\nindex a8fcb4b6ea1a..b8c8cfcf05b7 100644\n--- a/net/netfilter/nft_ct.c\n+++ b/net/netfilter/nft_ct.c\n@@ -1252,7 +1252,6 @@ static int nft_ct_expect_obj_init(const struct nft_ctx *ctx,\n \tswitch (priv->l4proto) {\n \tcase IPPROTO_TCP:\n \tcase IPPROTO_UDP:\n-\tcase IPPROTO_UDPLITE:\n \tcase IPPROTO_DCCP:\n \tcase IPPROTO_SCTP:\n \t\tbreak;\n", "prefixes": [ "1/2", "nf-next" ] }