get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2196532/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196532,
    "url": "http://patchwork.ozlabs.org/api/patches/2196532/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260214151230.18970-4-ja@ssi.bg/",
    "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": "<20260214151230.18970-4-ja@ssi.bg>",
    "list_archive_url": null,
    "date": "2026-02-14T15:12:27",
    "name": "[nf-next,3/6] ipvs: use single svc table",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "dc04a0cd635cc210a49505a1c3d8b26ec9204aba",
    "submitter": {
        "id": 2825,
        "url": "http://patchwork.ozlabs.org/api/people/2825/?format=api",
        "name": "Julian Anastasov",
        "email": "ja@ssi.bg"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260214151230.18970-4-ja@ssi.bg/mbox/",
    "series": [
        {
            "id": 492179,
            "url": "http://patchwork.ozlabs.org/api/series/492179/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=492179",
            "date": "2026-02-14T15:12:24",
            "name": "IPVS changes, part 2 of 4 - optimizations",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492179/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196532/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196532/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <netfilter-devel+bounces-10780-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 (4096-bit key;\n unprotected) header.d=ssi.bg header.i=@ssi.bg header.a=rsa-sha256\n header.s=ssi header.b=yCb54HeH;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-10780-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (4096-bit key) header.d=ssi.bg header.i=@ssi.bg header.b=\"yCb54HeH\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=193.238.174.39",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=ssi.bg",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=ssi.bg"
        ],
        "Received": [
            "from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fCt330XZRz1xr1\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 02:18:23 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id B5861300620E\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 15:18:20 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 18091269D18;\n\tSat, 14 Feb 2026 15:18:19 +0000 (UTC)",
            "from mx.ssi.bg (mx.ssi.bg [193.238.174.39])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 087442609EE;\n\tSat, 14 Feb 2026 15:18:16 +0000 (UTC)",
            "from mx.ssi.bg (localhost [127.0.0.1])\n\tby mx.ssi.bg (Potsfix) with ESMTP id 4315921D6A;\n\tSat, 14 Feb 2026 17:17:50 +0200 (EET)",
            "from box.ssi.bg (box.ssi.bg [193.238.174.46])\n\tby mx.ssi.bg (Potsfix) with ESMTPS;\n\tSat, 14 Feb 2026 17:17:47 +0200 (EET)",
            "from ja.ssi.bg (unknown [213.16.62.126])\n\tby box.ssi.bg (Potsfix) with ESMTPSA id 6477C628B1;\n\tSat, 14 Feb 2026 17:17:47 +0200 (EET)",
            "from ja.home.ssi.bg (localhost.localdomain [127.0.0.1])\n\tby ja.ssi.bg (8.18.1/8.18.1) with ESMTP id 61EFCvUG019354;\n\tSat, 14 Feb 2026 17:12:57 +0200",
            "(from root@localhost)\n\tby ja.home.ssi.bg (8.18.1/8.18.1/Submit) id 61EFCvBk019353;\n\tSat, 14 Feb 2026 17:12:57 +0200"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771082298; cv=none;\n b=G9cLG2tbNfDj9zZHAUkZVlOyiEFpzGqQtRoU/oHxjrHQ8ETI23BU4pF2plMlEGJNZRGHV9jpYynb8zRYPEO1k90kPZ8Liq5yJNTYsub+a5ECZaHdGAs0gw2SMokgJkK7Ou5q2/xiC51XR2RRyi0T8wEC02H8q7QBXdW45D1hZGc=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771082298; c=relaxed/simple;\n\tbh=KtfjqxYxOdRwIPS3qfEW0j1Bs6rsGLuFWbxEKAdOw7c=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=J6toRkd2fv2xabSBK3q9ihRixtjhvKJjg47gx2a1LcDq8N4WSrfdsP0fLfj3bVyJxMByxkurNsFrg7FAd/PHu+W+cjOJj8zgZgKasJr2PZmrLgC/l2DVQYsuXxmXsdWA7bzjn7e0nbS1C4IwlgImJ2h14/q3e1gsiMkHh8P2MaY=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=ssi.bg;\n spf=pass smtp.mailfrom=ssi.bg;\n dkim=pass (4096-bit key) header.d=ssi.bg header.i=@ssi.bg header.b=yCb54HeH;\n arc=none smtp.client-ip=193.238.174.39",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ssi.bg; h=cc:cc\n\t:content-transfer-encoding:date:from:from:in-reply-to:message-id\n\t:mime-version:references:reply-to:subject:subject:to:to; s=ssi;\n\t bh=yd+uA/R4W6APCvvfFWRBAUtqfslFN2rbhB5TtD/RzwU=; b=yCb54HeHOvFT\n\t2Oe8GHvZS7tdb0dJ9vpNR37p9GyVuG9o6jXi1F97pNT4tIXQhnamjgohkFpAp69v\n\t/MZLjZ8Fwwb+hhjxbhMDUCP08TkNenM/i9Grsn/O19CFjS4eM0hexluurYx6Ol4t\n\tGaUOc9GopoKGs4FSIZ9BJaxs8ap88qGLpYOqZryek+rVSEJYArbxyrUJIEYAAiNV\n\t++MooD3MGn0o+MOeqjpKasaDTZ9Aj39KbJVqEQ9SBENb01ZOoFxJsZkkI51T7/EN\n\teyU9xBrSpSqVeVh+j+JbieqQtNeckS5w+a7sRqcsIcej4W5DYLUekqgEVKN6VIcH\n\t5zwry66K0asbyXoXgaS9+bGAiAIhT1qlprcg7yfUj9WyA/PgJUutesJseldIfiQg\n\tSwKwvxORmSyKDhOgzrbz6l0xxiYLUGYaz/7MAmwZiWxK7w76q9UyBhoQsd0G86J7\n\tJEt9VSkB4yR4WXamnal5O3VVzPwwDnHhF15WXks5AddzmPekLvRsc1N/6TVG1V22\n\tKbogx2+kpSN56DttZrzFQ7DWJjkT6dQEjElOb2TuY/HltsD1dPW9E9uMnTIvr0Mb\n\tpVFwkeza+UnoX33AZ0XZ0N3tRslYhtAQGsSjkxNEklrnwT/nnzgCztHmPmCccUdF\n\tgYo4prUgB93mY1mSyTB57UDUc9aMaAQ=",
        "From": "Julian Anastasov <ja@ssi.bg>",
        "To": "Simon Horman <horms@verge.net.au>",
        "Cc": "Pablo Neira Ayuso <pablo@netfilter.org>, lvs-devel@vger.kernel.org,\n        netfilter-devel@vger.kernel.org, Dust Li <dust.li@linux.alibaba.com>,\n        Jiejian Wu <jiejian@linux.alibaba.com>",
        "Subject": "[PATCH nf-next 3/6] ipvs: use single svc table",
        "Date": "Sat, 14 Feb 2026 17:12:27 +0200",
        "Message-ID": "<20260214151230.18970-4-ja@ssi.bg>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260214151230.18970-1-ja@ssi.bg>",
        "References": "<20260214151230.18970-1-ja@ssi.bg>",
        "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"
    },
    "content": "fwmark based services and non-fwmark based services can be hashed\nin same service table. This reduces the burden of working with two\ntables.\n\nSigned-off-by: Julian Anastasov <ja@ssi.bg>\n---\n include/net/ip_vs.h            |   8 +-\n net/netfilter/ipvs/ip_vs_ctl.c | 146 +++++----------------------------\n 2 files changed, 22 insertions(+), 132 deletions(-)",
    "diff": "diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h\nindex 074a204ec6db..b5a5a5efe3cc 100644\n--- a/include/net/ip_vs.h\n+++ b/include/net/ip_vs.h\n@@ -679,8 +679,7 @@ struct ip_vs_dest_user_kern {\n  * forwarding entries.\n  */\n struct ip_vs_service {\n-\tstruct hlist_node\ts_list;   /* for normal service table */\n-\tstruct hlist_node\tf_list;   /* for fwmark-based service table */\n+\tstruct hlist_node\ts_list;   /* node in service table */\n \tatomic_t\t\trefcnt;   /* reference counter */\n \n \tu16\t\t\taf;       /* address family */\n@@ -1050,10 +1049,7 @@ struct netns_ipvs {\n \n \t/* the service mutex that protect svc_table and svc_fwm_table */\n \tstruct mutex service_mutex;\n-\t/* the service table hashed by <protocol, addr, port> */\n-\tstruct hlist_head svc_table[IP_VS_SVC_TAB_SIZE];\n-\t/* the service table hashed by fwmark */\n-\tstruct hlist_head svc_fwm_table[IP_VS_SVC_TAB_SIZE];\n+\tstruct hlist_head svc_table[IP_VS_SVC_TAB_SIZE];\t/* Services */\n };\n \n #define DEFAULT_SYNC_THRESHOLD\t3\ndiff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c\nindex b9eaf048a29f..2ef1f99dada6 100644\n--- a/net/netfilter/ipvs/ip_vs_ctl.c\n+++ b/net/netfilter/ipvs/ip_vs_ctl.c\n@@ -328,7 +328,7 @@ static inline unsigned int ip_vs_svc_fwm_hashkey(struct netns_ipvs *ipvs, __u32\n \n /*\n  *\tHashes a service in the svc_table by <netns,proto,addr,port>\n- *\tor in the svc_fwm_table by fwmark.\n+ *\tor by fwmark.\n  *\tShould be called with locked tables.\n  */\n static int ip_vs_svc_hash(struct ip_vs_service *svc)\n@@ -343,18 +343,17 @@ static int ip_vs_svc_hash(struct ip_vs_service *svc)\n \n \tif (svc->fwmark == 0) {\n \t\t/*\n-\t\t *  Hash it by <netns,protocol,addr,port> in svc_table\n+\t\t *  Hash it by <netns,protocol,addr,port>\n \t\t */\n \t\thash = ip_vs_svc_hashkey(svc->ipvs, svc->af, svc->protocol,\n \t\t\t\t\t &svc->addr, svc->port);\n-\t\thlist_add_head_rcu(&svc->s_list, &svc->ipvs->svc_table[hash]);\n \t} else {\n \t\t/*\n-\t\t *  Hash it by fwmark in svc_fwm_table\n+\t\t *  Hash it by fwmark\n \t\t */\n \t\thash = ip_vs_svc_fwm_hashkey(svc->ipvs, svc->fwmark);\n-\t\thlist_add_head_rcu(&svc->f_list, &svc->ipvs->svc_fwm_table[hash]);\n \t}\n+\thlist_add_head_rcu(&svc->s_list, &svc->ipvs->svc_table[hash]);\n \n \tsvc->flags |= IP_VS_SVC_F_HASHED;\n \t/* increase its refcnt because it is referenced by the svc table */\n@@ -364,7 +363,7 @@ static int ip_vs_svc_hash(struct ip_vs_service *svc)\n \n \n /*\n- *\tUnhashes a service from svc_table / svc_fwm_table.\n+ *\tUnhashes a service from svc_table.\n  *\tShould be called with locked tables.\n  */\n static int ip_vs_svc_unhash(struct ip_vs_service *svc)\n@@ -375,13 +374,8 @@ static int ip_vs_svc_unhash(struct ip_vs_service *svc)\n \t\treturn 0;\n \t}\n \n-\tif (svc->fwmark == 0) {\n-\t\t/* Remove it from the svc_table table */\n-\t\thlist_del_rcu(&svc->s_list);\n-\t} else {\n-\t\t/* Remove it from the svc_fwm_table table */\n-\t\thlist_del_rcu(&svc->f_list);\n-\t}\n+\t/* Remove it from svc_table */\n+\thlist_del_rcu(&svc->s_list);\n \n \tsvc->flags &= ~IP_VS_SVC_F_HASHED;\n \tatomic_dec(&svc->refcnt);\n@@ -404,7 +398,8 @@ __ip_vs_service_find(struct netns_ipvs *ipvs, int af, __u16 protocol,\n \n \thlist_for_each_entry_rcu(svc, &ipvs->svc_table[hash], s_list) {\n \t\tif (svc->af == af && ip_vs_addr_equal(af, &svc->addr, vaddr) &&\n-\t\t    svc->port == vport && svc->protocol == protocol) {\n+\t\t    svc->port == vport && svc->protocol == protocol &&\n+\t\t    !svc->fwmark) {\n \t\t\t/* HIT */\n \t\t\treturn svc;\n \t\t}\n@@ -426,7 +421,7 @@ __ip_vs_svc_fwm_find(struct netns_ipvs *ipvs, int af, __u32 fwmark)\n \t/* Check for fwmark addressed entries */\n \thash = ip_vs_svc_fwm_hashkey(ipvs, fwmark);\n \n-\thlist_for_each_entry_rcu(svc, &ipvs->svc_fwm_table[hash], f_list) {\n+\thlist_for_each_entry_rcu(svc, &ipvs->svc_table[hash], s_list) {\n \t\tif (svc->fwmark == fwmark && svc->af == af) {\n \t\t\t/* HIT */\n \t\t\treturn svc;\n@@ -1682,26 +1677,11 @@ static int ip_vs_flush(struct netns_ipvs *ipvs, bool cleanup)\n \tstruct ip_vs_service *svc;\n \tstruct hlist_node *n;\n \n-\t/*\n-\t * Flush the service table hashed by <netns,protocol,addr,port>\n-\t */\n \tfor(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n \t\thlist_for_each_entry_safe(svc, n, &ipvs->svc_table[idx],\n-\t\t\t\t\t  s_list) {\n+\t\t\t\t\t  s_list)\n \t\t\tip_vs_unlink_service(svc, cleanup);\n-\t\t}\n \t}\n-\n-\t/*\n-\t * Flush the service table hashed by fwmark\n-\t */\n-\tfor(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n-\t\thlist_for_each_entry_safe(svc, n, &ipvs->svc_fwm_table[idx],\n-\t\t\t\t\t  f_list) {\n-\t\t\tip_vs_unlink_service(svc, cleanup);\n-\t\t}\n-\t}\n-\n \treturn 0;\n }\n \n@@ -1764,11 +1744,6 @@ static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,\n \t\t\tlist_for_each_entry_rcu(dest, &svc->destinations,\n \t\t\t\t\t\tn_list)\n \t\t\t\tip_vs_forget_dev(dest, dev);\n-\n-\t\thlist_for_each_entry_rcu(svc, &ipvs->svc_fwm_table[idx], f_list)\n-\t\t\tlist_for_each_entry_rcu(dest, &svc->destinations,\n-\t\t\t\t\t\tn_list)\n-\t\t\t\tip_vs_forget_dev(dest, dev);\n \t}\n \trcu_read_unlock();\n \n@@ -1802,15 +1777,8 @@ static int ip_vs_zero_all(struct netns_ipvs *ipvs)\n \tstruct ip_vs_service *svc;\n \n \tfor(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n-\t\thlist_for_each_entry(svc, &ipvs->svc_table[idx], s_list) {\n+\t\thlist_for_each_entry(svc, &ipvs->svc_table[idx], s_list)\n \t\t\tip_vs_zero_service(svc);\n-\t\t}\n-\t}\n-\n-\tfor(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n-\t\thlist_for_each_entry(svc, &ipvs->svc_fwm_table[idx], f_list) {\n-\t\t\tip_vs_zero_service(svc);\n-\t\t}\n \t}\n \n \tip_vs_zero_stats(&ipvs->tot_stats->s);\n@@ -2246,7 +2214,6 @@ static struct ctl_table vs_vars[] = {\n \n struct ip_vs_iter {\n \tstruct seq_net_private p;  /* Do not move this, netns depends upon it*/\n-\tstruct hlist_head *table;\n \tint bucket;\n };\n \n@@ -2269,7 +2236,6 @@ static inline const char *ip_vs_fwd_name(unsigned int flags)\n }\n \n \n-/* Get the Nth entry in the two lists */\n static struct ip_vs_service *ip_vs_info_array(struct seq_file *seq, loff_t pos)\n {\n \tstruct net *net = seq_file_net(seq);\n@@ -2278,29 +2244,14 @@ static struct ip_vs_service *ip_vs_info_array(struct seq_file *seq, loff_t pos)\n \tint idx;\n \tstruct ip_vs_service *svc;\n \n-\t/* look in hash by protocol */\n \tfor (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n \t\thlist_for_each_entry_rcu(svc, &ipvs->svc_table[idx], s_list) {\n \t\t\tif (pos-- == 0) {\n-\t\t\t\titer->table = ipvs->svc_table;\n-\t\t\t\titer->bucket = idx;\n-\t\t\t\treturn svc;\n-\t\t\t}\n-\t\t}\n-\t}\n-\n-\t/* keep looking in fwmark */\n-\tfor (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n-\t\thlist_for_each_entry_rcu(svc, &ipvs->svc_fwm_table[idx],\n-\t\t\t\t\t f_list) {\n-\t\t\tif (pos-- == 0) {\n-\t\t\t\titer->table = ipvs->svc_fwm_table;\n \t\t\t\titer->bucket = idx;\n \t\t\t\treturn svc;\n \t\t\t}\n \t\t}\n \t}\n-\n \treturn NULL;\n }\n \n@@ -2327,38 +2278,17 @@ static void *ip_vs_info_seq_next(struct seq_file *seq, void *v, loff_t *pos)\n \tsvc = v;\n \titer = seq->private;\n \n-\tif (iter->table == ipvs->svc_table) {\n-\t\t/* next service in table hashed by protocol */\n-\t\te = rcu_dereference(hlist_next_rcu(&svc->s_list));\n-\t\tif (e)\n-\t\t\treturn hlist_entry(e, struct ip_vs_service, s_list);\n-\n-\t\twhile (++iter->bucket < IP_VS_SVC_TAB_SIZE) {\n-\t\t\thlist_for_each_entry_rcu(svc,\n-\t\t\t\t\t\t &ipvs->svc_table[iter->bucket],\n-\t\t\t\t\t\t s_list) {\n-\t\t\t\treturn svc;\n-\t\t\t}\n-\t\t}\n-\n-\t\titer->table = ipvs->svc_fwm_table;\n-\t\titer->bucket = -1;\n-\t\tgoto scan_fwmark;\n-\t}\n-\n-\t/* next service in hashed by fwmark */\n-\te = rcu_dereference(hlist_next_rcu(&svc->f_list));\n+\te = rcu_dereference(hlist_next_rcu(&svc->s_list));\n \tif (e)\n-\t\treturn hlist_entry(e, struct ip_vs_service, f_list);\n+\t\treturn hlist_entry(e, struct ip_vs_service, s_list);\n \n- scan_fwmark:\n \twhile (++iter->bucket < IP_VS_SVC_TAB_SIZE) {\n \t\thlist_for_each_entry_rcu(svc,\n-\t\t\t\t\t &ipvs->svc_fwm_table[iter->bucket],\n-\t\t\t\t\t f_list)\n+\t\t\t\t\t &ipvs->svc_table[iter->bucket],\n+\t\t\t\t\t s_list) {\n \t\t\treturn svc;\n+\t\t}\n \t}\n-\n \treturn NULL;\n }\n \n@@ -2380,17 +2310,12 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)\n \t\tseq_puts(seq,\n \t\t\t \"  -> RemoteAddress:Port Forward Weight ActiveConn InActConn\\n\");\n \t} else {\n-\t\tstruct net *net = seq_file_net(seq);\n-\t\tstruct netns_ipvs *ipvs = net_ipvs(net);\n \t\tconst struct ip_vs_service *svc = v;\n-\t\tconst struct ip_vs_iter *iter = seq->private;\n \t\tconst struct ip_vs_dest *dest;\n \t\tstruct ip_vs_scheduler *sched = rcu_dereference(svc->scheduler);\n \t\tchar *sched_name = sched ? sched->name : \"none\";\n \n-\t\tif (svc->ipvs != ipvs)\n-\t\t\treturn 0;\n-\t\tif (iter->table == ipvs->svc_table) {\n+\t\tif (!svc->fwmark) {\n #ifdef CONFIG_IP_VS_IPV6\n \t\t\tif (svc->af == AF_INET6)\n \t\t\t\tseq_printf(seq, \"%s  [%pI6]:%04X %s \",\n@@ -2865,24 +2790,6 @@ __ip_vs_get_service_entries(struct netns_ipvs *ipvs,\n \t\t}\n \t}\n \n-\tfor (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n-\t\thlist_for_each_entry(svc, &ipvs->svc_fwm_table[idx], f_list) {\n-\t\t\t/* Only expose IPv4 entries to old interface */\n-\t\t\tif (svc->af != AF_INET)\n-\t\t\t\tcontinue;\n-\n-\t\t\tif (count >= get->num_services)\n-\t\t\t\tgoto out;\n-\t\t\tmemset(&entry, 0, sizeof(entry));\n-\t\t\tip_vs_copy_service(&entry, svc);\n-\t\t\tif (copy_to_user(&uptr->entrytable[count],\n-\t\t\t\t\t &entry, sizeof(entry))) {\n-\t\t\t\tret = -EFAULT;\n-\t\t\t\tgoto out;\n-\t\t\t}\n-\t\t\tcount++;\n-\t\t}\n-\t}\n out:\n \treturn ret;\n }\n@@ -3383,17 +3290,6 @@ static int ip_vs_genl_dump_services(struct sk_buff *skb,\n \t\t}\n \t}\n \n-\tfor (i = 0; i < IP_VS_SVC_TAB_SIZE; i++) {\n-\t\thlist_for_each_entry_rcu(svc, &ipvs->svc_fwm_table[i], f_list) {\n-\t\t\tif (++idx <= start)\n-\t\t\t\tcontinue;\n-\t\t\tif (ip_vs_genl_dump_service(skb, svc, cb) < 0) {\n-\t\t\t\tidx--;\n-\t\t\t\tgoto nla_put_failure;\n-\t\t\t}\n-\t\t}\n-\t}\n-\n nla_put_failure:\n \trcu_read_unlock();\n \tcb->args[0] = idx;\n@@ -4403,12 +4299,10 @@ int __net_init ip_vs_control_net_init(struct netns_ipvs *ipvs)\n \tint ret = -ENOMEM;\n \tint idx;\n \n-\t/* Initialize service_mutex, svc_table, svc_fwm_table per netns */\n+\t/* Initialize service_mutex, svc_table per netns */\n \t__mutex_init(&ipvs->service_mutex, \"ipvs->service_mutex\", &__ipvs_service_key);\n-\tfor (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {\n+\tfor (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++)\n \t\tINIT_HLIST_HEAD(&ipvs->svc_table[idx]);\n-\t\tINIT_HLIST_HEAD(&ipvs->svc_fwm_table[idx]);\n-\t}\n \n \t/* Initialize rs_table */\n \tfor (idx = 0; idx < IP_VS_RTAB_SIZE; idx++)\n",
    "prefixes": [
        "nf-next",
        "3/6"
    ]
}