From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F779C282C5 for ; Fri, 25 Jan 2019 02:33:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 64A94218D0 for ; Fri, 25 Jan 2019 02:33:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728597AbfAYCdJ (ORCPT ); Thu, 24 Jan 2019 21:33:09 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46994 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728400AbfAYCdJ (ORCPT ); Thu, 24 Jan 2019 21:33:09 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0E8CFC0C6C2F; Fri, 25 Jan 2019 02:33:08 +0000 (UTC) Received: from localhost.localdomain (ovpn-116-7.gru2.redhat.com [10.97.116.7]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B480D7B539; Fri, 25 Jan 2019 02:33:04 +0000 (UTC) Received: by localhost.localdomain (Postfix, from userid 1000) id EBB20180CF5; Fri, 25 Jan 2019 00:33:02 -0200 (-02) From: Marcelo Ricardo Leitner To: Guy Shattah , Marcelo Leitner , Aaron Conole , John Hurley , Simon Horman , Justin Pettit , Gregory Rose , Eelco Chaudron , Flavio Leitner , Florian Westphal , Jiri Pirko , Rashid Khan , Sushil Kulkarni , Andy Gospodarek , Roi Dayan , Yossi Kuperman , Or Gerlitz , Rony Efraim , "davem@davemloft.net" Cc: netdev@vger.kernel.org Subject: [RFC PATCH 2/6] net/sched: flower: add support for matching on ConnTrack Date: Fri, 25 Jan 2019 00:32:31 -0200 Message-Id: <6c976cc538f1f565b74bd2c750639af91a93adc1.1548285996.git.mleitner@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 25 Jan 2019 02:33:08 +0000 (UTC) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hook on flow dissector's new interface on ConnTrack from previous patch. Signed-off-by: Marcelo Ricardo Leitner --- include/uapi/linux/pkt_cls.h | 9 +++++++++ net/sched/cls_flower.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h index 95d0db2a8350dffb1dd20816591f3b179913fb2e..ba1f3bc01b2fdfd810e37a2b3853a1da1f838acf 100644 --- a/include/uapi/linux/pkt_cls.h +++ b/include/uapi/linux/pkt_cls.h @@ -490,6 +490,15 @@ enum { TCA_FLOWER_KEY_PORT_DST_MIN, /* be16 */ TCA_FLOWER_KEY_PORT_DST_MAX, /* be16 */ + TCA_FLOWER_KEY_CT_ZONE, /* u16 */ + TCA_FLOWER_KEY_CT_ZONE_MASK, /* u16 */ + TCA_FLOWER_KEY_CT_STATE, /* u8 */ + TCA_FLOWER_KEY_CT_STATE_MASK, /* u8 */ + TCA_FLOWER_KEY_CT_MARK, /* u32 */ + TCA_FLOWER_KEY_CT_MARK_MASK, /* u32 */ + TCA_FLOWER_KEY_CT_LABEL, /* 128 bits */ + TCA_FLOWER_KEY_CT_LABEL_MASK, /* 128 bits */ + __TCA_FLOWER_MAX, }; diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 85e9f8e1da10aa7b01b0f51768edfefbe63d6a10..430b7fceeca0998b8c904acd91f8de53571814ff 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -57,6 +57,7 @@ struct fl_flow_key { struct flow_dissector_key_enc_opts enc_opts; struct flow_dissector_key_ports tp_min; struct flow_dissector_key_ports tp_max; + struct flow_dissector_key_ct ct; } __aligned(BITS_PER_LONG / 8); /* Ensure that we can do comparisons as longs. */ struct fl_flow_mask_range { @@ -1079,6 +1080,22 @@ static int fl_set_key(struct net *net, struct nlattr **tb, fl_set_key_ip(tb, true, &key->enc_ip, &mask->enc_ip); + fl_set_key_val(tb, &key->ct.mark, TCA_FLOWER_KEY_CT_MARK, + &mask->ct.mark, TCA_FLOWER_KEY_CT_MARK_MASK, + sizeof(key->ct.mark)); + + fl_set_key_val(tb, &key->ct.zone, TCA_FLOWER_KEY_CT_ZONE, + &mask->ct.zone, TCA_FLOWER_KEY_CT_ZONE_MASK, + sizeof(key->ct.zone)); + + fl_set_key_val(tb, &key->ct.state, TCA_FLOWER_KEY_CT_STATE, + &mask->ct.state, TCA_FLOWER_KEY_CT_STATE_MASK, + sizeof(key->ct.state)); + + fl_set_key_val(tb, &key->ct.label, TCA_FLOWER_KEY_CT_LABEL, + &mask->ct.label, TCA_FLOWER_KEY_CT_LABEL_MASK, + sizeof(key->ct.label)); + if (tb[TCA_FLOWER_KEY_ENC_OPTS]) { ret = fl_set_enc_opt(tb, key, mask, extack); if (ret) @@ -1183,6 +1200,8 @@ static void fl_init_dissector(struct flow_dissector *dissector, FLOW_DISSECTOR_KEY_ENC_IP, enc_ip); FL_KEY_SET_IF_MASKED(mask, keys, cnt, FLOW_DISSECTOR_KEY_ENC_OPTS, enc_opts); + FL_KEY_SET_IF_MASKED(mask, keys, cnt, + FLOW_DISSECTOR_KEY_CT, ct); skb_flow_dissector_init(dissector, keys, cnt); } @@ -1994,6 +2013,20 @@ static int fl_dump_key(struct sk_buff *skb, struct net *net, fl_dump_key_enc_opt(skb, &key->enc_opts, &mask->enc_opts)) goto nla_put_failure; + if (fl_dump_key_val(skb, &key->ct.zone, TCA_FLOWER_KEY_CT_ZONE, + &mask->ct.zone, TCA_FLOWER_KEY_CT_ZONE_MASK, + sizeof(key->ct.zone)) || + fl_dump_key_val(skb, &key->ct.mark, TCA_FLOWER_KEY_CT_MARK, + &mask->ct.mark, TCA_FLOWER_KEY_CT_MARK_MASK, + sizeof(key->ct.mark)) || + fl_dump_key_val(skb, &key->ct.state, TCA_FLOWER_KEY_CT_STATE, + &mask->ct.state, TCA_FLOWER_KEY_CT_STATE_MASK, + sizeof(key->ct.state)) || + fl_dump_key_val(skb, &key->ct.label, TCA_FLOWER_KEY_CT_LABEL, + &mask->ct.label, TCA_FLOWER_KEY_CT_LABEL_MASK, + sizeof(key->ct.label))) + goto nla_put_failure; + if (fl_dump_key_flags(skb, key->control.flags, mask->control.flags)) goto nla_put_failure; -- 2.20.1