[{"id":1774327,"web_url":"http://patchwork.ozlabs.org/comment/1774327/","msgid":"<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","list_archive_url":null,"date":"2017-09-25T01:28:21","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":71804,"url":"http://patchwork.ozlabs.org/api/people/71804/","name":"Yunsheng Lin","email":"linyunsheng@huawei.com"},"content":"Hi, Jiri\n\nOn 2017/9/25 1:22, Jiri Pirko wrote:\n> From: Yotam Gigi <yotamg@mellanox.com>\n> \n> When the ipmr starts, it adds one default FIB rule that matches all packets\n> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n> can be added by user to specify that for a specific interface, a packet\n> should be look up at either an arbitrary table or according to the l3mdev\n> of the interface.\n> \n> For drivers willing to offload the ipmr logic into a hardware but don't\n> want to offload all the FIB rules functionality, provide a function that\n> can indicate whether the FIB rule is the default multicast rule, thus only\n> one routing table is needed.\n> \n> This way, a driver can register to the FIB notification chain, get\n> notifications about FIB rules added and trigger some kind of an internal\n> abort mechanism when a non default rule is added by the user.\n> \n> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n> ---\n>  include/linux/mroute.h |  7 +++++++\n>  net/ipv4/ipmr.c        | 10 ++++++++++\n>  2 files changed, 17 insertions(+)\n> \n> diff --git a/include/linux/mroute.h b/include/linux/mroute.h\n> index 5566580..b072a84 100644\n> --- a/include/linux/mroute.h\n> +++ b/include/linux/mroute.h\n> @@ -5,6 +5,7 @@\n>  #include <linux/pim.h>\n>  #include <linux/rhashtable.h>\n>  #include <net/sock.h>\n> +#include <net/fib_rules.h>\n>  #include <net/fib_notifier.h>\n>  #include <uapi/linux/mroute.h>\n>  \n> @@ -19,6 +20,7 @@ int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);\n>  int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);\n>  int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);\n>  int ip_mr_init(void);\n> +bool ipmr_rule_default(const struct fib_rule *rule);\n>  #else\n>  static inline int ip_mroute_setsockopt(struct sock *sock, int optname,\n>  \t\t\t\t       char __user *optval, unsigned int optlen)\n> @@ -46,6 +48,11 @@ static inline int ip_mroute_opt(int opt)\n>  {\n>  \treturn 0;\n>  }\n> +\n> +static inline bool ipmr_rule_default(const struct fib_rule *rule)\n> +{\n> +\treturn true;\n> +}\n>  #endif\n>  \n>  struct vif_device {\n> diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c\n> index 2a795d2..a714f55 100644\n> --- a/net/ipv4/ipmr.c\n> +++ b/net/ipv4/ipmr.c\n> @@ -320,6 +320,16 @@ static unsigned int ipmr_rules_seq_read(struct net *net)\n>  }\n>  #endif\n>  \n> +bool ipmr_rule_default(const struct fib_rule *rule)\n> +{\n> +#if IS_ENABLED(CONFIG_FIB_RULES)\n> +\treturn fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;\n> +#else\n> +\treturn true;\n> +#endif\n\nIn patch 02, You have the following, can you do the same for the above?\n+#ifdef CONFIG_IP_MROUTE\n+void ipmr_cache_free(struct mfc_cache *mfc_cache);\n+#else\n+static inline void ipmr_cache_free(struct mfc_cache *mfc_cache)\n+{\n+}\n+#endif\n\n> +}\n> +EXPORT_SYMBOL(ipmr_rule_default);\n> +\n>  static inline int ipmr_hash_cmp(struct rhashtable_compare_arg *arg,\n>  \t\t\t\tconst void *ptr)\n>  {\n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y0mgm5PVmz9t3R\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 11:28:36 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S932117AbdIYB2e (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSun, 24 Sep 2017 21:28:34 -0400","from szxga05-in.huawei.com ([45.249.212.191]:6560 \"EHLO\n\tszxga05-in.huawei.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1753473AbdIYB2c (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sun, 24 Sep 2017 21:28:32 -0400","from 172.30.72.58 (EHLO DGGEMS408-HUB.china.huawei.com)\n\t([172.30.72.58])\n\tby dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued)\n\twith ESMTP id DHY71628; Mon, 25 Sep 2017 09:28:26 +0800 (CST)","from [127.0.0.1] (10.74.191.121) by DGGEMS408-HUB.china.huawei.com\n\t(10.3.19.208) with Microsoft SMTP Server id 14.3.301.0;\n\tMon, 25 Sep 2017 09:28:20 +0800"],"Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","To":"Jiri Pirko <jiri@resnulli.us>, <netdev@vger.kernel.org>","CC":"<davem@davemloft.net>, <yotamg@mellanox.com>,\n\t<idosch@mellanox.com>, <mlxsw@mellanox.com>,\n\t<nikolay@cumulusnetworks.com>, <andrew@lunn.ch>","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>","From":"Yunsheng Lin <linyunsheng@huawei.com>","Message-ID":"<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","Date":"Mon, 25 Sep 2017 09:28:21 +0800","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.0","MIME-Version":"1.0","In-Reply-To":"<20170924172212.10096-7-jiri@resnulli.us>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Originating-IP":"[10.74.191.121]","X-CFilter-Loop":"Reflected","X-Mirapoint-Virus-RAPID-Raw":"score=unknown(0),\n\trefid=str=0001.0A020205.59C85BBB.00CD, ss=1, re=0.000, recu=0.000,\n\treip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0,\n\tso=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32","X-Mirapoint-Loop-Id":"46fd5dd5b4b384b892de5bef01a13716","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1774427,"web_url":"http://patchwork.ozlabs.org/comment/1774427/","msgid":"<ec345e4d-9ce6-9526-742f-e39724e8f99e@mellanox.com>","list_archive_url":null,"date":"2017-09-25T05:39:40","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":69965,"url":"http://patchwork.ozlabs.org/api/people/69965/","name":"Yotam Gigi","email":"yotamg@mellanox.com"},"content":"On 09/25/2017 04:28 AM, Yunsheng Lin wrote:\n> Hi, Jiri\n>\n> On 2017/9/25 1:22, Jiri Pirko wrote:\n>> From: Yotam Gigi <yotamg@mellanox.com>\n>>\n>> When the ipmr starts, it adds one default FIB rule that matches all packets\n>> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n>> can be added by user to specify that for a specific interface, a packet\n>> should be look up at either an arbitrary table or according to the l3mdev\n>> of the interface.\n>>\n>> For drivers willing to offload the ipmr logic into a hardware but don't\n>> want to offload all the FIB rules functionality, provide a function that\n>> can indicate whether the FIB rule is the default multicast rule, thus only\n>> one routing table is needed.\n>>\n>> This way, a driver can register to the FIB notification chain, get\n>> notifications about FIB rules added and trigger some kind of an internal\n>> abort mechanism when a non default rule is added by the user.\n>>\n>> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n>> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n>> ---\n>>  include/linux/mroute.h |  7 +++++++\n>>  net/ipv4/ipmr.c        | 10 ++++++++++\n>>  2 files changed, 17 insertions(+)\n>>\n>> diff --git a/include/linux/mroute.h b/include/linux/mroute.h\n>> index 5566580..b072a84 100644\n>> --- a/include/linux/mroute.h\n>> +++ b/include/linux/mroute.h\n>> @@ -5,6 +5,7 @@\n>>  #include <linux/pim.h>\n>>  #include <linux/rhashtable.h>\n>>  #include <net/sock.h>\n>> +#include <net/fib_rules.h>\n>>  #include <net/fib_notifier.h>\n>>  #include <uapi/linux/mroute.h>\n>>  \n>> @@ -19,6 +20,7 @@ int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);\n>>  int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);\n>>  int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);\n>>  int ip_mr_init(void);\n>> +bool ipmr_rule_default(const struct fib_rule *rule);\n>>  #else\n>>  static inline int ip_mroute_setsockopt(struct sock *sock, int optname,\n>>  \t\t\t\t       char __user *optval, unsigned int optlen)\n>> @@ -46,6 +48,11 @@ static inline int ip_mroute_opt(int opt)\n>>  {\n>>  \treturn 0;\n>>  }\n>> +\n>> +static inline bool ipmr_rule_default(const struct fib_rule *rule)\n>> +{\n>> +\treturn true;\n>> +}\n>>  #endif\n>>  \n>>  struct vif_device {\n>> diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c\n>> index 2a795d2..a714f55 100644\n>> --- a/net/ipv4/ipmr.c\n>> +++ b/net/ipv4/ipmr.c\n>> @@ -320,6 +320,16 @@ static unsigned int ipmr_rules_seq_read(struct net *net)\n>>  }\n>>  #endif\n>>  \n>> +bool ipmr_rule_default(const struct fib_rule *rule)\n>> +{\n>> +#if IS_ENABLED(CONFIG_FIB_RULES)\n>> +\treturn fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;\n>> +#else\n>> +\treturn true;\n>> +#endif\n> In patch 02, You have the following, can you do the same for the above?\n> +#ifdef CONFIG_IP_MROUTE\n> +void ipmr_cache_free(struct mfc_cache *mfc_cache);\n> +#else\n> +static inline void ipmr_cache_free(struct mfc_cache *mfc_cache)\n> +{\n> +}\n> +#endif\n\nOK.\n\n>> +}\n>> +EXPORT_SYMBOL(ipmr_rule_default);\n>> +\n>>  static inline int ipmr_hash_cmp(struct rhashtable_compare_arg *arg,\n>>  \t\t\t\tconst void *ptr)\n>>  {\n>>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=Mellanox.com header.i=@Mellanox.com\n\theader.b=\"yHyIPaOi\"; dkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=yotamg@mellanox.com; "],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y0tFl1hwzz9t4B\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 15:39:55 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S932129AbdIYFjx (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 01:39:53 -0400","from mail-ve1eur01on0068.outbound.protection.outlook.com\n\t([104.47.1.68]:41664\n\t\"EHLO EUR01-VE1-obe.outbound.protection.outlook.com\"\n\trhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP\n\tid S932069AbdIYFjv (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tMon, 25 Sep 2017 01:39:51 -0400","from localhost.localdomain (79.181.49.40) by\n\tHE1PR0502MB2971.eurprd05.prod.outlook.com (2603:10a6:3:d7::12) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7;\n\tMon, 25 Sep 2017 05:39:45 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=LeR1JqFQrJ5AltSG4Y57w+H+rJGWn2p5uyJ+KGMbzWs=;\n\tb=yHyIPaOi2TORAkhWOecd2NcjQStOAFF8Ctf0eOEA3bnp2StHs5peZ8G+L0ckbQvoRUFLYrRBCTWPCngmiSDWKPUyllYkHLwuRjeT4v1O/sqGRQfQ2TmkDyyWTgLqyrn8i1F2mFLb/Slvc5ezx81E5Zb3sAqMeUVMxc5NCUr9diE=","Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","To":"Yunsheng Lin <linyunsheng@huawei.com>,\n\tJiri Pirko <jiri@resnulli.us>, netdev@vger.kernel.org","Cc":"davem@davemloft.net, idosch@mellanox.com, mlxsw@mellanox.com,\n\tnikolay@cumulusnetworks.com, andrew@lunn.ch","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>\n\t<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","From":"Yotam Gigi <yotamg@mellanox.com>","Message-ID":"<ec345e4d-9ce6-9526-742f-e39724e8f99e@mellanox.com>","Date":"Mon, 25 Sep 2017 08:39:40 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","X-Originating-IP":"[79.181.49.40]","X-ClientProxiedBy":"DB6PR0202CA0021.eurprd02.prod.outlook.com\n\t(2603:10a6:4:29::31) To HE1PR0502MB2971.eurprd05.prod.outlook.com\n\t(2603:10a6:3:d7::12)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"420e702a-3dba-4870-02af-08d503d7d56d","X-MS-Office365-Filtering-HT":"Tenant","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:HE1PR0502MB2971; ","X-Microsoft-Exchange-Diagnostics":["1; HE1PR0502MB2971;\n\t3:0szc9I7R3+udEatIKhQakCsmtCuF5mL15jRKb47pUAoM1hm0yovL2PZnctHFH98iB4Y2/Te41QzeHic/KXQodB4taD3vx9qVdIuaSzYWaWRo2Uob18qGlqC68jnQelVnN9I7rKcn1wE+ULbxI2UHIHYjx1iTje3kabrGVCLJMEpdAQfvTYW6hFcFBD8re+6iOfbM7PBvqf08L+H+D8gzrh1JpVCZyKrH4371SEsc20AN5HUIfJvEWxZm7Q8ynVZB;\n\t25:XjF9EI9xZf+cPzVk24mt5tbqxyt80pEdMsslYi1XOpZVolQ4dKWLiOJ8UPIY9bGYnxmuvL5SlLxoAkM28VUAHJQAakQm5pMGxCUuze2hlMcoN5fNBYKKvwGRFAv8N9o04983TgegslDCo3lsssK+4twJ4Osk07e8qIuvwopTvzVIEcGrFLNGbw2IAvmAP4rKKDc9cWkFwgfIujPuNiTKTQNhbUzwLvUMBhbRaWhWKyIR3dlbfSpzQp+iTnOfpu1bZQOKxg2P/ppZbCdQaRe5py3PRT3U40LHVTpb6fR9JN7jAjwLVKQlDuWaLvcPHyEntIRktrkwOF/DhRRPJThtBQ==;\n\t31:PGpAqhJKCf3HOL4cVE5tYgZIWuLVrXlOxuBObWOKRNNzv9DlbFNgL7IBvley/muJyzcoq/GPUSw4/zDXMHGhU9RYN32wnaJ3tQ7Z/MtZvY4B9gcLrHXDlxjXjPWEAeTTrilFWBFtSvVaxx4mieDl/R/iEhWuLfwlAamxESnPMDIQcUYN7lxhCyx6HTsko7la+ViHefEjI8o+1dILHQqNsvaEcWtfpF1tqECEpVgeL1U=","1; HE1PR0502MB2971;\n\t20:oN9sllqIXLw8cnrXDbLsxa3Twe6yck9UI967zbuhwdOYx3mueMEByv2dr2UlUlVWFAj0E1kZei7mnZjYSohDQegmF05uiX+LE4ElGBJdMfWUQ1yIqeY6zScLQu2ZI2F/3spBAFU9yexgRdfuzRcVzZ8bOCkTdeUbtpzyruLHeXR6OkY8q2YLvL+AsOZfxP1KZWFB2QKoU4i27cTstYqSyT1eYjMIfwLmApK3H2T/KVIA/kocg0OTinG85eytSe+tLx7IMf1RjLQg2stcARcIUkebAbtiKuef6W4SPJ6URSdCmiPjRx2F15FU9bHQEf9URMx4yG/sX6FwqdBaxVpMN7EZ97oi9ERore/UwZuhMICULLDVY2fKuFCbRIeFRBj+1B1+qCkx/kYPl7g+xKvpgabt+oyHKhtXPZ9JLO8m932D6ivBzd9eiqozopmxHe5mt8g6EqzuTAlGC4ZV0QbTzI6zsxeFJneGQCZJ9F25G/hk4gwsiaYaAeN1Jp2d78we;\n\t4:V2uxH2MUVMmIBpFN7OV/tol4QI37T7a/hymHZu9NIVmlTFp2VUWxeKN2gkBToW+aL9Jy+VSIVqpyKGB0NV4eEWydl4F53z1QVmVYFnxQzSp4hxvELracPN+wJ2+rpbfp3EoOahjIuBfmKMGEA+pYHfl3qpBhR191GWniZOycwlIDnrtwv8PNlG+0rC3jZo5t74ZgdE7bHTKPe1f4k5qcs5ds7hYBy7X/UTPsRHrLOVxwPNG/3xHyHcwl94ec0dgo","=?utf-8?q?1=3BHE1PR0502MB2971=3B23=3AyD?=\n\t=?utf-8?q?NtyxPcS2duDrgckyS0XFwYSIrAr8q/scQ7aCdr2C09WUOK3eoQeF5kOU?=\n\t=?utf-8?q?iGq2G18/qvtjfILsDS2vtoF9smk1m/VRgyIzSOm9slsnfRv4JPDrl9Vf?=\n\t=?utf-8?q?2i3fVbzWiht9FW9D7Y4gkf0TIsF+ese9r9IC1RRSGi1dX8SE/r7DNiSU?=\n\t=?utf-8?q?unBTmgyKcCAHnOY2E3ztJdeqIio5UiXHCZq2LOJANu2/xRnQ04bNod9f?=\n\t=?utf-8?q?UQGk/SIhmcanTQLapj/uAlhSfXCpYGj7j3DDr8LQzcawbKXMY5ET2AWI?=\n\t=?utf-8?q?BU1J/Yt01xUdrg6wKeuSr42HK2jeLZ+b2mSl3gkSa5G9nR8GDHNWsP0U?=\n\t=?utf-8?q?J4mrgI4LoQdrvMusuVzHTzcc5qo+l1+befWhoB/TwFQN2mbBOTqVM9yH?=\n\t=?utf-8?q?JcZNKe2qpJU6/U6isSxlV0qVGkCPhhx/dg9nnyNkTP7qwGLXGB0kRdxt?=\n\t=?utf-8?q?wOeqMErZl3onH7yi4HOdwlSBCjcpi5yAFK+TwxpxzOWyM2kmErUDkQMa?=\n\t=?utf-8?q?GM5UHtVLE9WzWIQDG3dy1oyqvvHknLE0iJJ70BfcMZZwlA6LKa0umXqL?=\n\t=?utf-8?q?gkWoOnHrb0kFvcv9a5C+kuJRxTSYoX/xGWUK9FPgRxdyT3UiihagfQxV?=\n\t=?utf-8?q?zRNBNXf7iBF4lqV5SbRuPvLUg79dFfGxMPyeq548Wq3FCZzjs6aKcv9X?=\n\t=?utf-8?q?ZiT1V8RF5fPMijAFN9eIAZVShmLzPxR1YYJSI5IZ+7RNaUfOwQnUAzLO?=\n\t=?utf-8?q?tbkzv1hKQkgdlqGCjy5DBd6XCITTEWRMETfBWiLZaDbdNbeERdHWZAJ2?=\n\t=?utf-8?q?2FpyU1BxUS9sCx6zMVn6MwX0eVXlqU0i81WS+8LXkQ6WUr7/Cj5BZvHV?=\n\t=?utf-8?q?YqBuIh7Bjrp/7SKpO2Ydcq2d8fDLO75GpoHZrAoNavX1NkZqXhUnkx7H?=\n\t=?utf-8?q?cAa/FoegaFXl8Zx8J2dl8udyLZDT1wxC17VE2sflTl4+D48On9FGM5K4?=\n\t=?utf-8?q?80Q7XN8qBekluEilOC3MmLyzaM5uYNcAhwsiQ9M5/HNGH782qe6L2iAE?=\n\t=?utf-8?q?TbiHFBClW+l2gJrT59LnQ7Nx4KvnKUwscYvu+jLtjhR5OFOMyk83PdZh?=\n\t=?utf-8?q?nR/aJ1h9llxAh2fmbhtoFcR2LUXHtA65QoRN7rvNswS6iJxs7xZqgKee?=\n\t=?utf-8?q?a756Xw6ShqhQnlnPj44O8WfZJxH/9Hjuq6LqO9I/dmt7l9s2/X0M8mla?=\n\t=?utf-8?q?wpE9sS9avvk0xqL6LxjOnxY9JJkYkvHCm/PedHMn3kXI8/QfPcO4HmGH?=\n\t=?utf-8?q?Xv/RJqoJSWAF+mKq7jKRiWXpRb2UcCYaDbeZQki8HIG0VDkhVJVM6576?=\n\t=?utf-8?q?VY3/d93JlVixg9gC81mz/RO/y1rDg/VtlY1SJfaPjgdqBZDBTjfuCy?=","1; HE1PR0502MB2971;\n\t6:1JGAnhXadN+ZZpA9p7du0WoiKvDR7aaZRpoHrLJ9jf8jZYQDyFZ0GFh5NTRj+yFILGQSATP3au0WCQbLWATQfCTyH4qlNhqRcpd1rEfgFlc4/D9LQSROckKw2teDSWLnVwtItEch0XwEi0oysao+S91yYVvXt8E6R2iyKhR5X1uni5c2ISLDMNt12i11mZwFW2i+rYXm02Ed1t2vnCtTvYxeNJx/tKPSxNXBQYSaP1K87XZs9gi3fJi5Sc3lT2hplPiiF6djXThLhS/8Iw/5EKkGWJxlpNVIXYyrxsOY/iDUTce6b8ylkO5ZWcnqcA1A1m8hqaA+BLqq5yXLU3WDiA==;\n\t5:/rqRLtqaQoZwBMdtQ6LONebyYrVBGqcyoUVNoZgLifxcnvKkbf1lVw4XCX9/1uvl232WaXEH+CdMzxAl1mnXsqH7hlcJ5DGR7dvMWt7JTj6xqw87JS41sPVh1bmTH290ewZQkNFEaQxRdsLFenc/Zw==;\n\t24:hj2stJrhOtErNfzxShLM0FO1AjjduUDc+kmb0A5f8UjKKtSYeXkz6AgQVwg358ZQQb+b48plNpo+H0uEIdhlFjQQFQqH7irVqahLWKsrsRk=;\n\t7:i1nYRqxP5mxIBjRQqJlKUqNTbOFkl9W0Oh96vuv1B001kjVkowbfxgswsVM8beZPgwBhLJ9fZ19JiQoYFWHAv/cUliwNVFdgvBadNH/wZ94n5hLAWRPhRyCGu5MvHAPgcnJ65a5YVDVkG88+xBhHy+ppDL7E7WhMX6gQSfOB4bMYmilvOMKXsm+rFkgKLw/Jvr+wzCFKQgfH3cgVHTbuZVUmtHo1DgY6sEf/52ig/mw="],"X-MS-TrafficTypeDiagnostic":"HE1PR0502MB2971:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<HE1PR0502MB297106D60D20A10510C3241FAC7A0@HE1PR0502MB2971.eurprd05.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:HE1PR0502MB2971; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:HE1PR0502MB2971; ","X-Forefront-PRVS":"04410E544A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(6069001)(346002)(376002)(189002)(24454002)(199003)(377454003)(97736004)(6246003)(2950100002)(66066001)(6666003)(31696002)(86362001)(189998001)(5660300001)(8936002)(25786009)(65956001)(68736007)(33646002)(316002)(101416001)(2906002)(3846002)(53546010)(47776003)(106356001)(305945005)(6116002)(6512007)(7736002)(53936002)(76176999)(50986999)(105586002)(54356999)(64126003)(50466002)(65806001)(65826007)(16526017)(58126008)(36756003)(110136005)(23676002)(8676002)(4326008)(6486002)(229853002)(81166006)(31686004)(83506001)(81156014)(6506006)(478600001)(230700001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0502MB2971;\n\tH:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tMX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"Mellanox.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"25 Sep 2017 05:39:45.8992\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"a652971c-7d2e-4d9b-a6a4-d149256f461b","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"HE1PR0502MB2971","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1774581,"web_url":"http://patchwork.ozlabs.org/comment/1774581/","msgid":"<d72ca561-4657-0223-d61c-0b0267318a5a@cumulusnetworks.com>","list_archive_url":null,"date":"2017-09-25T09:38:15","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":66448,"url":"http://patchwork.ozlabs.org/api/people/66448/","name":"Nikolay Aleksandrov","email":"nikolay@cumulusnetworks.com"},"content":"On 24/09/17 20:22, Jiri Pirko wrote:\n> From: Yotam Gigi <yotamg@mellanox.com>\n> \n> When the ipmr starts, it adds one default FIB rule that matches all packets\n> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n> can be added by user to specify that for a specific interface, a packet\n> should be look up at either an arbitrary table or according to the l3mdev\n> of the interface.\n> \n> For drivers willing to offload the ipmr logic into a hardware but don't\n> want to offload all the FIB rules functionality, provide a function that\n> can indicate whether the FIB rule is the default multicast rule, thus only\n> one routing table is needed.\n> \n> This way, a driver can register to the FIB notification chain, get\n> notifications about FIB rules added and trigger some kind of an internal\n> abort mechanism when a non default rule is added by the user.\n> \n> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n> ---\n>  include/linux/mroute.h |  7 +++++++\n>  net/ipv4/ipmr.c        | 10 ++++++++++\n>  2 files changed, 17 insertions(+)\n> \n\nI saw the comment and am fine with the patch either way, so you can\nadd my:\n\nReviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>\n\nThanks","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=cumulusnetworks.com\n\theader.i=@cumulusnetworks.com header.b=\"ZCyIRNlX\"; \n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y0zXs4ztKz9t3R\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 19:38:21 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934204AbdIYJiT (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 05:38:19 -0400","from mail-wm0-f47.google.com ([74.125.82.47]:49724 \"EHLO\n\tmail-wm0-f47.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S933992AbdIYJiS (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 25 Sep 2017 05:38:18 -0400","by mail-wm0-f47.google.com with SMTP id r74so17588040wme.4\n\tfor <netdev@vger.kernel.org>; Mon, 25 Sep 2017 02:38:18 -0700 (PDT)","from [192.168.0.103] (46-10-142-144.ip.btc-net.bg. [46.10.142.144])\n\tby smtp.googlemail.com with ESMTPSA id\n\ta23sm3903002edj.26.2017.09.25.02.38.16\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 25 Sep 2017 02:38:16 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=cumulusnetworks.com; s=google;\n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=M5B2dTBLtfKNBQb8Zg9d9ZsT2YgPKqM+RU6Q94po58M=;\n\tb=ZCyIRNlXCGLBeu4nzqmITvdcF9CZjoygQrA8P2Ja/65XSWnGmTtMxMEActqQK0iPkT\n\tPWSVs5P/odkSQFPcAP6tifB036ZFLvRMs+FYdVtVLAaWaTPuwkA1xIVTCaZ+3EKMgPP0\n\tNMT/v8NR4brXVPQxeGWQv0FvEY5vc/9+dx+5A=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=M5B2dTBLtfKNBQb8Zg9d9ZsT2YgPKqM+RU6Q94po58M=;\n\tb=paTG/bbqyWI8amdZyFH3uWwNxoiPVyBHtOPd3HAiPlorRAIvH+Qc6tOJQWjeyxofnW\n\thROFkGpm9bqZPedaJ1cMbLuztss3dHTJ1RuImrk/WnJiiXwS6hWvrAvIhR+e/0KJ759I\n\tng2qQY9F5blXKTjbribUz0Un0ssp8fJzrnZzd+prYUMjw3jaoVD+SQPI9pqU+mYCgsdB\n\tRnoB6ZDITGvUvs2Q+0kQ7oz1/HdbJHl/5YmXsbmL5gR/XLbGE7KBMdwq0Mt/hAIhBhAt\n\tKOTk1Ojoyb1KxCuBgpFI7SuIqFRe4HhHFqEyA2okBuhSjzDrLzg7hC29yNpwmhCWMe8q\n\tkWxQ==","X-Gm-Message-State":"AHPjjUjXXS8Da/SHDwRF8ZhueSprqY+OATXP0pSKulP/5rLviqpGWFyT\n\tcxlOeiApMxP7EfM3/GbS9pqpPA==","X-Google-Smtp-Source":"AOwi7QD1P6z1at/qRaxxFcIwaGgVfR57MkloQ7f3TBdbBo/UP2r+2mmMm0NL3/+3pbV5To9EKR0CjQ==","X-Received":"by 10.80.144.131 with SMTP id c3mr13303283eda.120.1506332297458; \n\tMon, 25 Sep 2017 02:38:17 -0700 (PDT)","Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","To":"Jiri Pirko <jiri@resnulli.us>, netdev@vger.kernel.org","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>","Cc":"davem@davemloft.net, yotamg@mellanox.com, idosch@mellanox.com,\n\tmlxsw@mellanox.com, andrew@lunn.ch","From":"Nikolay Aleksandrov <nikolay@cumulusnetworks.com>","Message-ID":"<d72ca561-4657-0223-d61c-0b0267318a5a@cumulusnetworks.com>","Date":"Mon, 25 Sep 2017 12:38:15 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tIcedove/45.6.0","MIME-Version":"1.0","In-Reply-To":"<20170924172212.10096-7-jiri@resnulli.us>","Content-Type":"text/plain; charset=windows-1252","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1774585,"web_url":"http://patchwork.ozlabs.org/comment/1774585/","msgid":"<20170925094508.GC1899@nanopsycho>","list_archive_url":null,"date":"2017-09-25T09:45:08","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":15321,"url":"http://patchwork.ozlabs.org/api/people/15321/","name":"Jiri Pirko","email":"jiri@resnulli.us"},"content":"Mon, Sep 25, 2017 at 03:28:21AM CEST, linyunsheng@huawei.com wrote:\n>Hi, Jiri\n>\n>On 2017/9/25 1:22, Jiri Pirko wrote:\n>> From: Yotam Gigi <yotamg@mellanox.com>\n>> \n>> When the ipmr starts, it adds one default FIB rule that matches all packets\n>> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n>> can be added by user to specify that for a specific interface, a packet\n>> should be look up at either an arbitrary table or according to the l3mdev\n>> of the interface.\n>> \n>> For drivers willing to offload the ipmr logic into a hardware but don't\n>> want to offload all the FIB rules functionality, provide a function that\n>> can indicate whether the FIB rule is the default multicast rule, thus only\n>> one routing table is needed.\n>> \n>> This way, a driver can register to the FIB notification chain, get\n>> notifications about FIB rules added and trigger some kind of an internal\n>> abort mechanism when a non default rule is added by the user.\n>> \n>> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n>> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n>> ---\n>>  include/linux/mroute.h |  7 +++++++\n>>  net/ipv4/ipmr.c        | 10 ++++++++++\n>>  2 files changed, 17 insertions(+)\n>> \n>> diff --git a/include/linux/mroute.h b/include/linux/mroute.h\n>> index 5566580..b072a84 100644\n>> --- a/include/linux/mroute.h\n>> +++ b/include/linux/mroute.h\n>> @@ -5,6 +5,7 @@\n>>  #include <linux/pim.h>\n>>  #include <linux/rhashtable.h>\n>>  #include <net/sock.h>\n>> +#include <net/fib_rules.h>\n>>  #include <net/fib_notifier.h>\n>>  #include <uapi/linux/mroute.h>\n>>  \n>> @@ -19,6 +20,7 @@ int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);\n>>  int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);\n>>  int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);\n>>  int ip_mr_init(void);\n>> +bool ipmr_rule_default(const struct fib_rule *rule);\n>>  #else\n>>  static inline int ip_mroute_setsockopt(struct sock *sock, int optname,\n>>  \t\t\t\t       char __user *optval, unsigned int optlen)\n>> @@ -46,6 +48,11 @@ static inline int ip_mroute_opt(int opt)\n>>  {\n>>  \treturn 0;\n>>  }\n>> +\n>> +static inline bool ipmr_rule_default(const struct fib_rule *rule)\n>> +{\n>> +\treturn true;\n>> +}\n>>  #endif\n>>  \n>>  struct vif_device {\n>> diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c\n>> index 2a795d2..a714f55 100644\n>> --- a/net/ipv4/ipmr.c\n>> +++ b/net/ipv4/ipmr.c\n>> @@ -320,6 +320,16 @@ static unsigned int ipmr_rules_seq_read(struct net *net)\n>>  }\n>>  #endif\n>>  \n>> +bool ipmr_rule_default(const struct fib_rule *rule)\n>> +{\n>> +#if IS_ENABLED(CONFIG_FIB_RULES)\n>> +\treturn fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;\n>> +#else\n>> +\treturn true;\n>> +#endif\n>\n>In patch 02, You have the following, can you do the same for the above?\n>+#ifdef CONFIG_IP_MROUTE\n>+void ipmr_cache_free(struct mfc_cache *mfc_cache);\n>+#else\n>+static inline void ipmr_cache_free(struct mfc_cache *mfc_cache)\n>+{\n>+}\n>+#endif\n\nI don't believe this is necessary. The solution you described is often\nused in headers. But here, I'm ok with the current code.\n\n\n>\n>> +}\n>> +EXPORT_SYMBOL(ipmr_rule_default);\n>> +\n>>  static inline int ipmr_hash_cmp(struct rhashtable_compare_arg *arg,\n>>  \t\t\t\tconst void *ptr)\n>>  {\n>> \n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=resnulli-us.20150623.gappssmtp.com\n\theader.i=@resnulli-us.20150623.gappssmtp.com\n\theader.b=\"dytPH1wZ\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y0zhp5DlNz9sRV\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 19:45:14 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934440AbdIYJpM (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 05:45:12 -0400","from mail-wr0-f193.google.com ([209.85.128.193]:38578 \"EHLO\n\tmail-wr0-f193.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S934239AbdIYJpK (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 25 Sep 2017 05:45:10 -0400","by mail-wr0-f193.google.com with SMTP id p37so1632869wrb.5\n\tfor <netdev@vger.kernel.org>; Mon, 25 Sep 2017 02:45:10 -0700 (PDT)","from localhost (ip-89-177-136-69.net.upcbroadband.cz.\n\t[89.177.136.69]) by smtp.gmail.com with ESMTPSA id\n\t29sm9934489wrz.77.2017.09.25.02.45.09\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tMon, 25 Sep 2017 02:45:09 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=resnulli-us.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=IhXQh4w07aCXlHrVGjToPJ5x5hil3rKnSjjARcaidR4=;\n\tb=dytPH1wZowptEwlA3L+3adpoxbvRZai/OK5rp2Uy65rKpb06pTcj4GKlu5mPgoG3Ea\n\tT9IB1vP3FHxyrtpLeShNYB832ONzjRW76dnNSJQ1ZpotzWFl5+8MXo4SJ7/+yyFlsiR+\n\t/MkoneURAC1dX/i0G+8HDGBt3HEBqgl2SUZHmD6xvLG5uSnklRH7Eb6sOWvErxbL2sdj\n\t2XPNdhh9KYYo3G4ImU5xBYSeToZQ4covjdItkKtweDLKvrURgbCEEGfmSVd8gMC/nsyg\n\tPap2w7VSzUVxnNZGck8lg4LzmWh+0ks1J8MxsT3E7ukYITeIJ5XBA5Ws12RoJLDUxIDk\n\tsbBw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=IhXQh4w07aCXlHrVGjToPJ5x5hil3rKnSjjARcaidR4=;\n\tb=kxCnOIBdnMxJewQ2eD3/+9fPmLKu1nXryjbGwbxZJby5n1sZUtSF8ABNlgM0NWVzTs\n\tmz62BFozTTcJrve/lQhFe7RWVw7zYYo58VfPW8rIRi6u7mD64R0OeaK4ANyo8g9r0x74\n\tM6oLkyutx2H6gHoHtQeHDMS6ZdJYvV7LNkZwKvE9o1PTTzS01XGCuPXPE16iEocvg5qo\n\twq9owgDMEQZSQF+d9MLI3Ek/fEzZwlsifp1AeZhvcFSwlBrpI5gk3inGKqL87RBE6k9w\n\tfiOiLNwPvpFLfXV9cF+Bk58p7CiiPMFXAV2e2zcDo3esIjxCAi49yt8h8somBYpUnc6Q\n\tiJRA==","X-Gm-Message-State":"AHPjjUj04LcozmV6X0mihp7N0lXFhJ/a7gt98adKWGa/LKWGFL9258cT\n\trH1EIOfraaDrMm1jmaqOmBGcjw==","X-Google-Smtp-Source":"AOwi7QAZMS+7kAPEfE0MwqaKcC9bfKg/n0MP3vyLFnuTdcJ5j5Plhi8sjHFSDMGCgyKTbakU1ExWMQ==","X-Received":"by 10.223.164.200 with SMTP id h8mr6151817wrb.58.1506332709620; \n\tMon, 25 Sep 2017 02:45:09 -0700 (PDT)","Date":"Mon, 25 Sep 2017 11:45:08 +0200","From":"Jiri Pirko <jiri@resnulli.us>","To":"Yunsheng Lin <linyunsheng@huawei.com>","Cc":"netdev@vger.kernel.org, davem@davemloft.net, yotamg@mellanox.com,\n\tidosch@mellanox.com, mlxsw@mellanox.com,\n\tnikolay@cumulusnetworks.com, andrew@lunn.ch","Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","Message-ID":"<20170925094508.GC1899@nanopsycho>","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>\n\t<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1774598,"web_url":"http://patchwork.ozlabs.org/comment/1774598/","msgid":"<fc1f3324-d2fc-f95c-50d2-25773f3c7683@cumulusnetworks.com>","list_archive_url":null,"date":"2017-09-25T10:02:17","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":66448,"url":"http://patchwork.ozlabs.org/api/people/66448/","name":"Nikolay Aleksandrov","email":"nikolay@cumulusnetworks.com"},"content":"On 25/09/17 12:45, Jiri Pirko wrote:\n> Mon, Sep 25, 2017 at 03:28:21AM CEST, linyunsheng@huawei.com wrote:\n>> Hi, Jiri\n>>\n>> On 2017/9/25 1:22, Jiri Pirko wrote:\n>>> From: Yotam Gigi <yotamg@mellanox.com>\n>>>\n>>> When the ipmr starts, it adds one default FIB rule that matches all packets\n>>> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n>>> can be added by user to specify that for a specific interface, a packet\n>>> should be look up at either an arbitrary table or according to the l3mdev\n>>> of the interface.\n>>>\n>>> For drivers willing to offload the ipmr logic into a hardware but don't\n>>> want to offload all the FIB rules functionality, provide a function that\n>>> can indicate whether the FIB rule is the default multicast rule, thus only\n>>> one routing table is needed.\n>>>\n>>> This way, a driver can register to the FIB notification chain, get\n>>> notifications about FIB rules added and trigger some kind of an internal\n>>> abort mechanism when a non default rule is added by the user.\n>>>\n>>> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n>>> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n>>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n>>> ---\n>>>  include/linux/mroute.h |  7 +++++++\n>>>  net/ipv4/ipmr.c        | 10 ++++++++++\n>>>  2 files changed, 17 insertions(+)\n>>>\n>>> diff --git a/include/linux/mroute.h b/include/linux/mroute.h\n>>> index 5566580..b072a84 100644\n>>> --- a/include/linux/mroute.h\n>>> +++ b/include/linux/mroute.h\n>>> @@ -5,6 +5,7 @@\n>>>  #include <linux/pim.h>\n>>>  #include <linux/rhashtable.h>\n>>>  #include <net/sock.h>\n>>> +#include <net/fib_rules.h>\n>>>  #include <net/fib_notifier.h>\n>>>  #include <uapi/linux/mroute.h>\n>>>  \n>>> @@ -19,6 +20,7 @@ int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);\n>>>  int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);\n>>>  int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);\n>>>  int ip_mr_init(void);\n>>> +bool ipmr_rule_default(const struct fib_rule *rule);\n>>>  #else\n>>>  static inline int ip_mroute_setsockopt(struct sock *sock, int optname,\n>>>  \t\t\t\t       char __user *optval, unsigned int optlen)\n>>> @@ -46,6 +48,11 @@ static inline int ip_mroute_opt(int opt)\n>>>  {\n>>>  \treturn 0;\n>>>  }\n>>> +\n>>> +static inline bool ipmr_rule_default(const struct fib_rule *rule)\n>>> +{\n>>> +\treturn true;\n>>> +}\n>>>  #endif\n>>>  \n>>>  struct vif_device {\n>>> diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c\n>>> index 2a795d2..a714f55 100644\n>>> --- a/net/ipv4/ipmr.c\n>>> +++ b/net/ipv4/ipmr.c\n>>> @@ -320,6 +320,16 @@ static unsigned int ipmr_rules_seq_read(struct net *net)\n>>>  }\n>>>  #endif\n>>>  \n>>> +bool ipmr_rule_default(const struct fib_rule *rule)\n>>> +{\n>>> +#if IS_ENABLED(CONFIG_FIB_RULES)\n>>> +\treturn fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;\n>>> +#else\n>>> +\treturn true;\n>>> +#endif\n>>\n>> In patch 02, You have the following, can you do the same for the above?\n>> +#ifdef CONFIG_IP_MROUTE\n>> +void ipmr_cache_free(struct mfc_cache *mfc_cache);\n>> +#else\n>> +static inline void ipmr_cache_free(struct mfc_cache *mfc_cache)\n>> +{\n>> +}\n>> +#endif\n> \n> I don't believe this is necessary. The solution you described is often\n> used in headers. But here, I'm ok with the current code.\n> \n\n+1\n\n> \n>>\n>>> +}\n>>> +EXPORT_SYMBOL(ipmr_rule_default);\n>>> +\n>>>  static inline int ipmr_hash_cmp(struct rhashtable_compare_arg *arg,\n>>>  \t\t\t\tconst void *ptr)\n>>>  {\n>>>\n>>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=cumulusnetworks.com\n\theader.i=@cumulusnetworks.com header.b=\"Gq9lIbL8\"; \n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y104c3Lnxz9tX3\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 20:02:24 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S933589AbdIYKCW (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 06:02:22 -0400","from mail-wm0-f47.google.com ([74.125.82.47]:46555 \"EHLO\n\tmail-wm0-f47.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S932698AbdIYKCV (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 25 Sep 2017 06:02:21 -0400","by mail-wm0-f47.google.com with SMTP id m72so17734535wmc.1\n\tfor <netdev@vger.kernel.org>; Mon, 25 Sep 2017 03:02:20 -0700 (PDT)","from [192.168.0.103] (46-10-142-144.ip.btc-net.bg. [46.10.142.144])\n\tby smtp.googlemail.com with ESMTPSA id\n\ti93sm3519102edc.53.2017.09.25.03.02.18\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 25 Sep 2017 03:02:18 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=cumulusnetworks.com; s=google;\n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=qyG6igpcgilMRezYKJJI95U9b9KF6LjGAtjjPjny8/8=;\n\tb=Gq9lIbL8LdEEp7ycGEnRAEEYi4vehsWVojcIdPwgXc0T2J051LoIcCp9U+9cy5z/ti\n\txMpOgA++mHmsbAZzhfYkWBLhB4qGIYDxhb2HZ9vJ/1ytR6v82DB5/YXNtKFidxzXN1Xy\n\tPrlEsejRLueZsuYzC32jx6xyRCdMunR6Wii3c=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=qyG6igpcgilMRezYKJJI95U9b9KF6LjGAtjjPjny8/8=;\n\tb=kAqrt2i2Tw3gSRJbp84TG+dzcS4MYqUdG2/q7hvJT1+DvvqS7ttN/B/7XRXV+atSZp\n\tV8bfolSMgzWbmUMPExhHn+zHJ89I5Q92r4BjkKUJ/moSOlW7jbsKHY4vhbaQh5OnrQbi\n\tFkx/7is3EotekqWDXUgQjiI/EMmYDR21owBpHuoYAjbJ5N1+X6ldySios2D3MfWoKW0d\n\tk3k0a+PzCMtpP2N/vS7b5+HC02HdaRHA4w3hVpqWCQpm6uiedkEd7ddOwQpvJMurnepo\n\tkATaAN7ue0IPtFgmIzpm+ZTKEX9xbISpWVanCacghS3fCbuH5VsfMt0BiBirEe+Nwf2r\n\t4/RQ==","X-Gm-Message-State":"AHPjjUhwyw/aNiK06inMxgXwgOIFGAr9HysScAn309vq5hKnonValik+\n\tYg7mR664l8zz3F1XpiWXx/ziYxyL","X-Google-Smtp-Source":"AOwi7QAVMNFK9Ed59T0RTdUTvVfM8pMSQmYYzW3ING/lBqEIQh1ExqT7ISvzD8sAolk9LdrFY5DIvw==","X-Received":"by 10.80.181.194 with SMTP id a60mr13052628ede.231.1506333739798;\n\tMon, 25 Sep 2017 03:02:19 -0700 (PDT)","Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","To":"Jiri Pirko <jiri@resnulli.us>, Yunsheng Lin <linyunsheng@huawei.com>","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>\n\t<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>\n\t<20170925094508.GC1899@nanopsycho>","Cc":"netdev@vger.kernel.org, davem@davemloft.net, yotamg@mellanox.com,\n\tidosch@mellanox.com, mlxsw@mellanox.com, andrew@lunn.ch","From":"Nikolay Aleksandrov <nikolay@cumulusnetworks.com>","X-Enigmail-Draft-Status":"N1110","Message-ID":"<fc1f3324-d2fc-f95c-50d2-25773f3c7683@cumulusnetworks.com>","Date":"Mon, 25 Sep 2017 13:02:17 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tIcedove/45.6.0","MIME-Version":"1.0","In-Reply-To":"<20170925094508.GC1899@nanopsycho>","Content-Type":"text/plain; charset=windows-1252","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1774737,"web_url":"http://patchwork.ozlabs.org/comment/1774737/","msgid":"<193145c9-4f6c-5bd3-4b19-55f0c8af28c0@mellanox.com>","list_archive_url":null,"date":"2017-09-25T13:37:03","subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","submitter":{"id":69965,"url":"http://patchwork.ozlabs.org/api/people/69965/","name":"Yotam Gigi","email":"yotamg@mellanox.com"},"content":"On 09/25/2017 01:02 PM, Nikolay Aleksandrov wrote:\n> On 25/09/17 12:45, Jiri Pirko wrote:\n>> Mon, Sep 25, 2017 at 03:28:21AM CEST, linyunsheng@huawei.com wrote:\n>>> Hi, Jiri\n>>>\n>>> On 2017/9/25 1:22, Jiri Pirko wrote:\n>>>> From: Yotam Gigi <yotamg@mellanox.com>\n>>>>\n>>>> When the ipmr starts, it adds one default FIB rule that matches all packets\n>>>> and sends them to the DEFAULT (multicast) FIB table. A more complex rule\n>>>> can be added by user to specify that for a specific interface, a packet\n>>>> should be look up at either an arbitrary table or according to the l3mdev\n>>>> of the interface.\n>>>>\n>>>> For drivers willing to offload the ipmr logic into a hardware but don't\n>>>> want to offload all the FIB rules functionality, provide a function that\n>>>> can indicate whether the FIB rule is the default multicast rule, thus only\n>>>> one routing table is needed.\n>>>>\n>>>> This way, a driver can register to the FIB notification chain, get\n>>>> notifications about FIB rules added and trigger some kind of an internal\n>>>> abort mechanism when a non default rule is added by the user.\n>>>>\n>>>> Signed-off-by: Yotam Gigi <yotamg@mellanox.com>\n>>>> Reviewed-by: Ido Schimmel <idosch@mellanox.com>\n>>>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n>>>> ---\n>>>>  include/linux/mroute.h |  7 +++++++\n>>>>  net/ipv4/ipmr.c        | 10 ++++++++++\n>>>>  2 files changed, 17 insertions(+)\n>>>>\n>>>> diff --git a/include/linux/mroute.h b/include/linux/mroute.h\n>>>> index 5566580..b072a84 100644\n>>>> --- a/include/linux/mroute.h\n>>>> +++ b/include/linux/mroute.h\n>>>> @@ -5,6 +5,7 @@\n>>>>  #include <linux/pim.h>\n>>>>  #include <linux/rhashtable.h>\n>>>>  #include <net/sock.h>\n>>>> +#include <net/fib_rules.h>\n>>>>  #include <net/fib_notifier.h>\n>>>>  #include <uapi/linux/mroute.h>\n>>>>  \n>>>> @@ -19,6 +20,7 @@ int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);\n>>>>  int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);\n>>>>  int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);\n>>>>  int ip_mr_init(void);\n>>>> +bool ipmr_rule_default(const struct fib_rule *rule);\n>>>>  #else\n>>>>  static inline int ip_mroute_setsockopt(struct sock *sock, int optname,\n>>>>  \t\t\t\t       char __user *optval, unsigned int optlen)\n>>>> @@ -46,6 +48,11 @@ static inline int ip_mroute_opt(int opt)\n>>>>  {\n>>>>  \treturn 0;\n>>>>  }\n>>>> +\n>>>> +static inline bool ipmr_rule_default(const struct fib_rule *rule)\n>>>> +{\n>>>> +\treturn true;\n>>>> +}\n>>>>  #endif\n>>>>  \n>>>>  struct vif_device {\n>>>> diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c\n>>>> index 2a795d2..a714f55 100644\n>>>> --- a/net/ipv4/ipmr.c\n>>>> +++ b/net/ipv4/ipmr.c\n>>>> @@ -320,6 +320,16 @@ static unsigned int ipmr_rules_seq_read(struct net *net)\n>>>>  }\n>>>>  #endif\n>>>>  \n>>>> +bool ipmr_rule_default(const struct fib_rule *rule)\n>>>> +{\n>>>> +#if IS_ENABLED(CONFIG_FIB_RULES)\n>>>> +\treturn fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;\n>>>> +#else\n>>>> +\treturn true;\n>>>> +#endif\n>>> In patch 02, You have the following, can you do the same for the above?\n>>> +#ifdef CONFIG_IP_MROUTE\n>>> +void ipmr_cache_free(struct mfc_cache *mfc_cache);\n>>> +#else\n>>> +static inline void ipmr_cache_free(struct mfc_cache *mfc_cache)\n>>> +{\n>>> +}\n>>> +#endif\n>> I don't believe this is necessary. The solution you described is often\n>> used in headers. But here, I'm ok with the current code.\n>>\n> +1\n\n\nHmm, when re-looking at it, I think I will just use the already existing\n#ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES other than adding a new one. It selects\nthe CONFIG_FIB_RULES, and if CONFIG_IP_MROUTE_MULTIPLE_TABLES is not defined\nthan only default rules can exist for the IPMR family.\n\nI will fix it for v3.\n\n\n\n>\n>>>> +}\n>>>> +EXPORT_SYMBOL(ipmr_rule_default);\n>>>> +\n>>>>  static inline int ipmr_hash_cmp(struct rhashtable_compare_arg *arg,\n>>>>  \t\t\t\tconst void *ptr)\n>>>>  {\n>>>>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=Mellanox.com header.i=@Mellanox.com\n\theader.b=\"rn9E8CHx\"; dkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=yotamg@mellanox.com; "],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y14rf0Qcnz9tXD\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 23:37:22 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S935741AbdIYNhT (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 09:37:19 -0400","from mail-db5eur01on0045.outbound.protection.outlook.com\n\t([104.47.2.45]:63072\n\t\"EHLO EUR01-DB5-obe.outbound.protection.outlook.com\"\n\trhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP\n\tid S935732AbdIYNhO (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tMon, 25 Sep 2017 09:37:14 -0400","from localhost.localdomain (79.179.78.224) by\n\tHE1PR0502MB2971.eurprd05.prod.outlook.com (2603:10a6:3:d7::12) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7;\n\tMon, 25 Sep 2017 13:37:09 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=0Ka77loqueRYpLYTiE1rZe0FHtzxyMqZSAoKn6Zw8A8=;\n\tb=rn9E8CHxh/U90l4R5YoKsY9PLLFwhwqFDuDKAi0Uwhd8lF3vVHkP/j8OBx3lgn/YPv+oE3oJy8K+p6yGYdMx0W24pc2CYi0VbfgT/YXQEfyDhGS3pS9Cnjdm+EDDdT4trGjMb4l742ly3OBO2KBQ93XR1srvS9sDs1/M9z3nhlM=","Subject":"Re: [patch net-next v2 06/12] net: mroute: Check if rule is a\n\tdefault rule","To":"Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,\n\tJiri Pirko <jiri@resnulli.us>, Yunsheng Lin <linyunsheng@huawei.com>","Cc":"netdev@vger.kernel.org, davem@davemloft.net, idosch@mellanox.com,\n\tmlxsw@mellanox.com, andrew@lunn.ch","References":"<20170924172212.10096-1-jiri@resnulli.us>\n\t<20170924172212.10096-7-jiri@resnulli.us>\n\t<93dcea9d-94eb-39cf-4102-e5c59fb2dfa5@huawei.com>\n\t<20170925094508.GC1899@nanopsycho>\n\t<fc1f3324-d2fc-f95c-50d2-25773f3c7683@cumulusnetworks.com>","From":"Yotam Gigi <yotamg@mellanox.com>","Message-ID":"<193145c9-4f6c-5bd3-4b19-55f0c8af28c0@mellanox.com>","Date":"Mon, 25 Sep 2017 16:37:03 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<fc1f3324-d2fc-f95c-50d2-25773f3c7683@cumulusnetworks.com>","Content-Type":"text/plain; charset=windows-1252","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","X-Originating-IP":"[79.179.78.224]","X-ClientProxiedBy":"HE1PR0202CA0023.eurprd02.prod.outlook.com\n\t(2603:10a6:3:8c::33) To HE1PR0502MB2971.eurprd05.prod.outlook.com\n\t(2603:10a6:3:d7::12)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"87b771fe-2077-41ad-3a72-08d5041a8604","X-MS-Office365-Filtering-HT":"Tenant","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:HE1PR0502MB2971; ","X-Microsoft-Exchange-Diagnostics":["1; HE1PR0502MB2971;\n\t3:xfJcvec7a2vNvs82jLHM7Bo3oG6UxpoxmzOENHG+ySI6BqHNm6zVfakPSCcl7pjz6wxQuM1YR/3LSarMQEslLZoMSbywRCFSLbbss+OJq6y9uVK4UTnoERpziOCZqn8wizCW2jcJNgE2LGLdcd8G3F5dI7D2Y+58ur7uidlqIVRpNvkqyFnazD8jh+d1DLoZim3cvNDe0S81WNGyA5VUax6pBK9VJVuZ1K3ZqRHzfkpvykodFSQuYXA0aLG/qnBA;\n\t25:ZZNl/fMdaeZMWEovSaeWwxUPzNutDJm9cOXDT19M7p9scc6Iwpovdzf4hyyWehenzGN/IRgbUSjFlAmumDzBRiYcuVLmqpV2CNQgqhaW8IA6ty3nP6CRoIb+gX+40BbDTkjoMzDPITDBsnIa1tvwuxfCYWCREk0imYNBtVHmO/fSnkNI2iVnSeP7lo1nOuS/86jNcjL2XDI8U6mRyU1//mxbwcaE9r0bdgqQk3yPx5pAIyoq5U/MI9XgO15EW5dI14tgFdoR9c5IIWgyJnaCv8vkqNSUD0ji8gQm6YqHm6UmnKQGgk+U+OHLcVgn5ZIEwcaG5z4HL6jXU/8N/D5yUg==;\n\t31:TFZMQokkFLPVkTvsQf35DDbTEpdtI8bbTcLl8vWRDbEoiu6v5WvOakZt/CriTVJoPtysSJQp915zNNxrpcFOyGPEGCMqKEryHUg50qH+DP8F7NHBZtWY3JpfmV5/UeNnp+5j+vACg6oDWsFgZcWxQpBDC7MPI9dNrYFK0uJKIEqPKkogvNGhGafyl6GOvK5zksvt5mWQhiGP/hCnIr5cfKiaRdXkzIq/1WaISY4I114=","1; HE1PR0502MB2971;\n\t20:k3QsYEPNsrpp5DRtjzFCYZ1q/roiCbGrmUCOLrKV2eDpzEddAEhhY5AyAGQeVtk55UPSLW0VWUQyfJdrih0dk7s6DEIM4NqVbZouB0Nw441rBLaZ++1WxfP12Pm7Zlr2GvlQ4ZD/VVdAjmcfzn7gG3CiRaJLq+TpcZzi1/6ILiBVALy4iz86X420xdPlwCLDWl1V6ytoe7WQmu+lYSUhRle2iXpXYfWQ52jEnqi8GphkwwHR5fwvuTOxjvXZHMX9YgN+J4T8tbyST0qUUS/x3VlWgJZdwWhgxbegGnBK9+FcRK6Uk1KByGarYvJy8NYQUmEBrRMLZbo4CQJ5bBQDJEnMw1r3xZbbJ4iNCT61+BWWYT0rRybUAP2Juw/EIr6Vq+uq3FruQv6gPaT64UEX3Ex0JYVpbixXuopgKykQI6tAJoksH+PNnK8CTjhILVV+QZnPPYavr/SR4VCNmniNiZJ4QSdO/xrPQC4NkQu7Pm5BhXobe54MlqBq4LzxsGr4;\n\t4:bkpWM+v61/WdcGPZxCkLD/2n/x8kgZYUdDz6hQGAngYAaFgFbvR2j3F6Cc/A98rD9Z7rnS3hYlAi6H9uPdnbU+pMQwXRfCOZkwJCg9imN9LJU42BEBy81+qepuGbNX/rmuH1t1Z2t6wz8Zds/Wf4pyIJmIVKvZRLZ5RLwiX92xGbJ8NEcHzzJmXK+dKAcnPK6CsxovMU8BmrgdhnuRZ7OwYlU256oZ+FWjo/eVxgPyTfkJaR9xR/Qrbz54Z4Lt/TyVAjpmLCFVV0k17/bWzkHcFGgKicvN/3v0RCnJJXhKw=","=?windows-1252?q?1=3BHE1PR0502MB2971=3B?=\n\t=?windows-1252?q?23=3AntmqY7uEFHMCcDRA0s7giq1TL7qt6PgmGAksmCCExZip?=\n\t=?windows-1252?q?WwRtfbex0bHNo5BjOaEqFPde9VCk917u0+CSVD9PtGR9efMQ3?=\n\t=?windows-1252?q?EBxmBFubG33Pq0ZVi49tXIAWkxbdaXlqdpkHBz6XY2sD7OTAQ?=\n\t=?windows-1252?q?MFBGbpt8FJGcLqPnOCiAm2rvdp0m7WMezHiZSv3m1seTRlK1M?=\n\t=?windows-1252?q?usxtBjscfkr0uHxiEhkfph1cMkn3xKlxnFvQ+EeOYnER4RPEW?=\n\t=?windows-1252?q?w9dQx96fDLxVVfqZLeHuTi6JLeJ9GpUqwtIFMFkgDB568jtsH?=\n\t=?windows-1252?q?5J8QdZq3DvRE+9R5jKUuLS4dzSWjGOP6O8EVyrdqCffEibPTp?=\n\t=?windows-1252?q?aPdY0r4ybAyF3Fxu07pjje4NvSUrydNCdyrYWsXG210WV7QD5?=\n\t=?windows-1252?q?aMQGfpvdCgpXkEu8M0coNGwTd4V8E4ZkuOQdtZwba+GLN9teH?=\n\t=?windows-1252?q?/N0/07kwXplViab6RHJKJvqENiDAFawdaky1HaIUJBrb4zmiW?=\n\t=?windows-1252?q?QQ23FJJxXVC4HqCBSJU0HiWPIPDI8bxiWqwSq5igyCH644KeB?=\n\t=?windows-1252?q?3qxH7ktcm4OqInkCbuTmhuDTnewFiSzl0OjemGsM9IxmnGRKY?=\n\t=?windows-1252?q?kkTRtRalsno4GX7tYxydzI9Q3qaZsKyn05SLrD3ac+1rUWD9L?=\n\t=?windows-1252?q?iEHwCcj3IGKL/449FmPvjanfi8ZBQ2ggXjw3tfXJ928Np5c9T?=\n\t=?windows-1252?q?tcePDJb3M3u1EJJqjEZxKk6Dr+lDTgy8oVBAHq31VUn2T5WNr?=\n\t=?windows-1252?q?ZyO8dfM6SVTeUs0+/mfic6pJgmy7dxGUjtRrKaxd0TAvMg67R?=\n\t=?windows-1252?q?yj1BfVRfd9TiDmiTgJdioOg2QSpMOusjmrUaDRCOnBW/oHeau?=\n\t=?windows-1252?q?Y5PArKlm+K23AZzIp2ZpvEtMGyll3YlQIYOuCOtUD68/IYkn3?=\n\t=?windows-1252?q?5NyVuq9u9t6wFT9UKWWYbWQRks+4Zjl1xZdzbbOGwgSMZtmwn?=\n\t=?windows-1252?q?bPfKlacJ80osgVmGfXxF27pX8BMRVs086/Lxoa3Ty1oreupvh?=\n\t=?windows-1252?q?7uEMn+Tv4u2VABY3MCM+MlAag+GB57Z+xhqhVZ+AF8RU3EWD7?=\n\t=?windows-1252?q?OQqYawdBIS/DFTjgbW+5VQmJ8cmzvYZ8MpXgR/M3fFZeeDpXo?=\n\t=?windows-1252?q?pzSt1WF93YK61NIwUHI4j4E0mARqJhHoM1NsHmqqEoG2VnsAh?=\n\t=?windows-1252?q?GM4DyW2WgR1wMyLgW5RM1Cr/Kfhyb2mIi/cRqg/SgYyYYrFFU?=\n\t=?windows-1252?q?MVV2vR8rI5Ut0k1bzgJi8iD/9/Z67ssQj5AIUFYnchBO6L69l?=\n\t=?windows-1252?q?KoJGLXN6cqftwB1Nns04tlMH4uQPzQ9nrvGloiXyQvW/Nqjq1?=\n\t=?windows-1252?q?sAOjg1pv4zn8pj6sHu90WZQcZbX04mkr/I2QxGc7WspWAEwKI?=\n\t=?windows-1252?q?Mkog/gue1cNt9sxiGc7rNHyy5is0pLqoKHI8+9Mz9YfyQPQDY?=\n\t=?windows-1252?q?ehgSIeyzaYqIQj2XXEV4=3D?=","1; HE1PR0502MB2971;\n\t6:xhNiM5JMAOKMPu5lrkaI7wLq29POtod+n2TVXJaTdm0jiylZKtEGRahuvQ+0KqbOm4YMPOVAaH/ZPvRNduOby1/VE3W11ofBlONoYE7Z6+1OESj/5UJ2JPFDVuVgv2rGVjE4AShGB/dvTM9pxTY1DJ63vUszcZGdUZMblSBqk6TWzcZnBYzseSEH44q7MDBe28CXJf1PuNTWQ8DoEaAniOASM9yFfPPbQW3x54mICiu1Y1DqDw+yZkv65bunWuDAoDQL9PSBjMVYBrPPWGwE6bxp3wVUTpInE1W+jReTTAgScOnOsR9Wy1UqfCaUwZF4D7ESP9qHqfJ7qVLuBuyGUQ==;\n\t5:0wKKq0XU/z3cqY5FRCwjS6mdJl7jcsvoxaEyZgFCdTZX8nGgBLbXZIomMjHIAe7X46BxlFuC00VIzV/daMH3nQpjTbdBCMHyvAcMpjr7A5Ba4T64asSXIla7+Rkpo9H+24uU28wlWzhBTJnhyX6paA==;\n\t24:9tpCPoaHVjPAVfa2LEdWnQWk7nZf4HvA7LQdduVDnX15tO917c3Dp6NvRVsBQDIi57JdMR7zD6GCEU7gZq23hukeDUlH8OeEXsha5O9CXmw=;\n\t7:ERzh6yymH4e2CoUQivBwnLQ+pBELIQ3IaZSy4KiFdEJjy3fKAvM5G/s64mTvOIP0Ch4bHwvBnVWue9kMzFoBdQnionyWw3Z0NFvZjdY5GmGlNRSo9aYY5UCDAT7eRZOFKnVX2rli8/NK0NizPXNxCXOc4uTy8eYAt4VG3PTl8lEXFWpccjZYhmu8otAn29bXf9+q+YowUgUkgXE+gjTv+R4LFLDs5NnUGLa3f/zLEIA="],"X-MS-TrafficTypeDiagnostic":"HE1PR0502MB2971:","X-Exchange-Antispam-Report-Test":"UriScan:(50582790962513);","X-Microsoft-Antispam-PRVS":"<HE1PR0502MB2971945B681E531D739E8276AC7A0@HE1PR0502MB2971.eurprd05.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:HE1PR0502MB2971; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:HE1PR0502MB2971; ","X-Forefront-PRVS":"04410E544A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(6069001)(39860400002)(346002)(376002)(24454002)(189002)(199003)(377454003)(97736004)(4326008)(2950100002)(66066001)(6666003)(31696002)(6246003)(86362001)(189998001)(5660300001)(8936002)(65956001)(25786009)(47776003)(68736007)(33646002)(316002)(101416001)(2906002)(106356001)(53546010)(3846002)(6116002)(305945005)(6512007)(7736002)(53936002)(76176999)(50986999)(105586002)(54356999)(64126003)(65806001)(58126008)(16526017)(65826007)(110136005)(36756003)(23746002)(8676002)(50466002)(6486002)(229853002)(81166006)(83506001)(81156014)(31686004)(478600001)(93886005)(6506006)(230700001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0502MB2971;\n\tH:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tMX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"Mellanox.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"25 Sep 2017 13:37:09.6565\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"a652971c-7d2e-4d9b-a6a4-d149256f461b","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"HE1PR0502MB2971","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]