[{"id":1774081,"web_url":"http://patchwork.ozlabs.org/comment/1774081/","msgid":"<1506200690.29839.217.camel@edumazet-glaptop3.roam.corp.google.com>","list_archive_url":null,"date":"2017-09-23T21:04:50","subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","submitter":{"id":2404,"url":"http://patchwork.ozlabs.org/api/people/2404/","name":"Eric Dumazet","email":"eric.dumazet@gmail.com"},"content":"On Sat, 2017-09-23 at 21:26 +0200, Florian Westphal wrote:\n> Reviewed-by: David Ahern <dsahern@gmail.com>\n> Signed-off-by: Florian Westphal <fw@strlen.de>\n> ---\n>  Changes since v3: don't add rtnl assertion, I placed the assertion\n>  in my working tree instead as a reminder.\n> \n>  net/core/rtnetlink.c | 11 +++++++++--\n>  1 file changed, 9 insertions(+), 2 deletions(-)\n> \n> diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c\n> index c801212ee40e..47c17c3de79a 100644\n> --- a/net/core/rtnetlink.c\n> +++ b/net/core/rtnetlink.c\n> @@ -1332,6 +1332,14 @@ static int nla_put_iflink(struct sk_buff *skb, const struct net_device *dev)\n>  \treturn nla_put_u32(skb, IFLA_LINK, ifindex);\n>  }\n>  \n> +static noinline int nla_put_ifalias(struct sk_buff *skb, struct net_device *dev)\n\n\nWhy noinline here ?\n\nThis function does not use stack at all (and that would call for\nnoinline_for_stack )\n\n> +{\n> +\tif (dev->ifalias)\n> +\t\treturn nla_put_string(skb, IFLA_IFALIAS, dev->ifalias);\n> +\n> +\treturn 0;\n> +}\n> +\n\nI really do not see the point of not making this RCU aware right away,\nor at least make it in the same patch series...","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=gmail.com header.i=@gmail.com\n\theader.b=\"cllGJ6sR\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y030R2Lnjz9t1t\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun, 24 Sep 2017 07:10:31 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751059AbdIWVEy (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 23 Sep 2017 17:04:54 -0400","from mail-pg0-f68.google.com ([74.125.83.68]:34173 \"EHLO\n\tmail-pg0-f68.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750839AbdIWVEx (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 23 Sep 2017 17:04:53 -0400","by mail-pg0-f68.google.com with SMTP id u18so2658951pgo.1\n\tfor <netdev@vger.kernel.org>; Sat, 23 Sep 2017 14:04:52 -0700 (PDT)","from [192.168.86.171] (c-67-180-167-114.hsd1.ca.comcast.net.\n\t[67.180.167.114]) by smtp.googlemail.com with ESMTPSA id\n\tw82sm5219982pfa.69.2017.09.23.14.04.50\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSat, 23 Sep 2017 14:04:51 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=message-id:subject:from:to:cc:date:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=OLWq8/uwfD5GoS0rvys7JvJzO0CkrqxP8TCKyCI9mcg=;\n\tb=cllGJ6sR0MfLUShZ4NX11FbtrEXB4NQlzKZc2Rh9goKWAiG+b2oTarvliBvgIurfTE\n\tBwOqJ05uHhy6/ASCFXrvpy28eagAF2soboydhvbjogZPjgUGmIla81pQzsgo+y9ijy6M\n\tZd7sZJKrzl42m80As/nZIcf5iEwKga2MN4XKwsNybeHp6aSxKm13R1RIjjs7IM64vFqP\n\tLQiPrl/M+Rg2tm62YPli1nkd1VNvSRFEZkayy0RN9Ye5uZuwwyEo3+NpRv1vwcsYJsbV\n\tzD3Pnw4djbxAcZBjaDJMwdDz9sXOwjU8BIOhPTtVTKtcwcBJtkG0kphss+JfOAz8TmNh\n\thoBw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=OLWq8/uwfD5GoS0rvys7JvJzO0CkrqxP8TCKyCI9mcg=;\n\tb=fZQjYiYqyyuvNXScjqbPGLwNkGnXiqT2OVYlowYXq/76rRGJXFORDVOUlqdtDCr31T\n\tLej9EQf/H/Wq2HrgHMbn6owyukWoFjHBynMqRhjMZ6DxiXko2XQT7Qc/YIvGAPHsci80\n\tEghqKYkUfBO7b7sqyyYNQIIs0fg/JU3FvJnvIhOeA6jMa2sfL+zjtENcvNjizbcSKnaJ\n\tBM2vGlMh+KT3m1ct5VzFFSN47MZWM0CUJB0PMTfwd/jQP25dDjj3F76uJ+8NYzH6ctow\n\tzgMrLv8k+rfBMzqel3DLAXpbx1apydlEu71cpRcwx7RfJ5TQOHTuvgUY3BTIuaGfg5TG\n\tYD4w==","X-Gm-Message-State":"AHPjjUijyNNv5cF0U4YMfyLc0u1QFAVWmRuS1vD0ZF1udzYc3a8J5Cvi\n\tNjEHwX0N+duiBF54zhIeqcQ=","X-Google-Smtp-Source":"AOwi7QAzrV0KRaLxJwcsJF0CoNrswu64WhBPkMVc1zDNrjOJAsQhvsr9Ve8tvvYV7Ebb7xgPPl6hIg==","X-Received":"by 10.99.113.79 with SMTP id b15mr3000585pgn.387.1506200692628; \n\tSat, 23 Sep 2017 14:04:52 -0700 (PDT)","Message-ID":"<1506200690.29839.217.camel@edumazet-glaptop3.roam.corp.google.com>","Subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","From":"Eric Dumazet <eric.dumazet@gmail.com>","To":"Florian Westphal <fw@strlen.de>","Cc":"netdev@vger.kernel.org","Date":"Sat, 23 Sep 2017 14:04:50 -0700","In-Reply-To":"<20170923192636.3932-4-fw@strlen.de>","References":"<20170923192636.3932-1-fw@strlen.de>\n\t<20170923192636.3932-4-fw@strlen.de>","Content-Type":"text/plain; charset=\"UTF-8\"","X-Mailer":"Evolution 3.10.4-0ubuntu2 ","Mime-Version":"1.0","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":1774086,"web_url":"http://patchwork.ozlabs.org/comment/1774086/","msgid":"<20170923212124.GD4324@breakpoint.cc>","list_archive_url":null,"date":"2017-09-23T21:21:24","subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","submitter":{"id":1025,"url":"http://patchwork.ozlabs.org/api/people/1025/","name":"Florian Westphal","email":"fw@strlen.de"},"content":"Eric Dumazet <eric.dumazet@gmail.com> wrote:\n> On Sat, 2017-09-23 at 21:26 +0200, Florian Westphal wrote:\n> > Reviewed-by: David Ahern <dsahern@gmail.com>\n> > Signed-off-by: Florian Westphal <fw@strlen.de>\n> > ---\n> >  Changes since v3: don't add rtnl assertion, I placed the assertion\n> >  in my working tree instead as a reminder.\n> > \n> >  net/core/rtnetlink.c | 11 +++++++++--\n> >  1 file changed, 9 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c\n> > index c801212ee40e..47c17c3de79a 100644\n> > --- a/net/core/rtnetlink.c\n> > +++ b/net/core/rtnetlink.c\n> > @@ -1332,6 +1332,14 @@ static int nla_put_iflink(struct sk_buff *skb, const struct net_device *dev)\n> >  \treturn nla_put_u32(skb, IFLA_LINK, ifindex);\n> >  }\n> >  \n> > +static noinline int nla_put_ifalias(struct sk_buff *skb, struct net_device *dev)\n> \n> \n> Why noinline here ?\n> \n> This function does not use stack at all (and that would call for\n> noinline_for_stack )\n> \n> > +{\n> > +\tif (dev->ifalias)\n> > +\t\treturn nla_put_string(skb, IFLA_IFALIAS, dev->ifalias);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> \n> I really do not see the point of not making this RCU aware right away,\n> or at least make it in the same patch series...\n\nI saw no point to mix these refactoring with actual change :-|\n\n(and it doesn't help either as-is with netlink dumping, only sysfs path can\n elide rtnl).\n\nSubject: [PATCH net-next] net: core: decouple ifalias get/set from rtnl lock\n\nDevice alias can be set by either rtnetlink (rtnl is held) or sysfs.\n\nrtnetlink holds rtnl mutex, sysfs acquires it for this purpose.\nAdd a new mutex for it plus a seqcount to get a consistent snapshot\nof the alias buffer.\n\nThis allows the sysfs path to not take rtnl and would later allow\nto not hold it when dumping ifalias.\n\nSigned-off-by: Florian Westphal <fw@strlen.de>\n---\n include/linux/netdevice.h |  3 +-\n net/core/dev.c            | 70 +++++++++++++++++++++++++++++++++++++++--------\n net/core/net-sysfs.c      | 14 ++++------\n net/core/rtnetlink.c      |  7 +++--\n 4 files changed, 70 insertions(+), 24 deletions(-)\n\ndiff --git a/include/linux/netdevice.h b/include/linux/netdevice.h\nindex f535779d9dc1..0bcedb498f6f 100644\n--- a/include/linux/netdevice.h\n+++ b/include/linux/netdevice.h\n@@ -1632,7 +1632,7 @@ enum netdev_priv_flags {\n struct net_device {\n \tchar\t\t\tname[IFNAMSIZ];\n \tstruct hlist_node\tname_hlist;\n-\tchar \t\t\t*ifalias;\n+\tchar \t\t\t__rcu *ifalias;\n \t/*\n \t *\tI/O specific fields\n \t *\tFIXME: Merge these and struct ifmap into one\n@@ -3275,6 +3275,7 @@ void __dev_notify_flags(struct net_device *, unsigned int old_flags,\n \t\t\tunsigned int gchanges);\n int dev_change_name(struct net_device *, const char *);\n int dev_set_alias(struct net_device *, const char *, size_t);\n+int dev_get_alias(const struct net_device *, char *, size_t);\n int dev_change_net_namespace(struct net_device *, struct net *, const char *);\n int __dev_set_mtu(struct net_device *, int);\n int dev_set_mtu(struct net_device *, int);\ndiff --git a/net/core/dev.c b/net/core/dev.c\nindex 97abddd9039a..92d87b4a2db1 100644\n--- a/net/core/dev.c\n+++ b/net/core/dev.c\n@@ -188,6 +188,9 @@ static struct napi_struct *napi_by_id(unsigned int napi_id);\n DEFINE_RWLOCK(dev_base_lock);\n EXPORT_SYMBOL(dev_base_lock);\n \n+static DEFINE_MUTEX(ifalias_mutex);\n+static seqcount_t ifalias_rename_seq;\n+\n /* protects napi_hash addition/deletion and napi_gen_id */\n static DEFINE_SPINLOCK(napi_hash_lock);\n \n@@ -1265,29 +1268,72 @@ int dev_change_name(struct net_device *dev, const char *newname)\n  */\n int dev_set_alias(struct net_device *dev, const char *alias, size_t len)\n {\n-\tchar *new_ifalias;\n-\n-\tASSERT_RTNL();\n+\tchar *new_ifalias, *old_ifalias;\n \n \tif (len >= IFALIASZ)\n \t\treturn -EINVAL;\n \n+\tmutex_lock(&ifalias_mutex);\n+\n+\told_ifalias = rcu_dereference_protected(dev->ifalias,\n+\t\t\t\t\t\tmutex_is_locked(&ifalias_mutex));\n \tif (!len) {\n-\t\tkfree(dev->ifalias);\n-\t\tdev->ifalias = NULL;\n-\t\treturn 0;\n+\t\tRCU_INIT_POINTER(dev->ifalias, NULL);\n+\t\tgoto out;\n \t}\n \n-\tnew_ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL);\n-\tif (!new_ifalias)\n+\tnew_ifalias = __krealloc(old_ifalias, len + 1, GFP_KERNEL);\n+\tif (!new_ifalias) {\n+\t\tmutex_unlock(&ifalias_mutex);\n \t\treturn -ENOMEM;\n-\tdev->ifalias = new_ifalias;\n-\tmemcpy(dev->ifalias, alias, len);\n-\tdev->ifalias[len] = 0;\n+\t}\n \n+\tif (new_ifalias == old_ifalias) {\n+\t\twrite_seqcount_begin(&ifalias_rename_seq);\n+\t\tmemcpy(new_ifalias, alias, len);\n+\t\tnew_ifalias[len] = 0;\n+\t\twrite_seqcount_end(&ifalias_rename_seq);\n+\t\tmutex_unlock(&ifalias_mutex);\n+\t\treturn len;\n+\t}\n+\n+\tmemcpy(new_ifalias, alias, len);\n+\tnew_ifalias[len] = 0;\n+\n+\trcu_assign_pointer(dev->ifalias, new_ifalias);\n+out:\n+\tmutex_unlock(&ifalias_mutex);\n+\tif (old_ifalias) {\n+\t\tsynchronize_net();\n+\t\tkfree(old_ifalias);\n+\t}\n \treturn len;\n }\n \n+int dev_get_alias(const struct net_device *dev, char *alias, size_t len)\n+{\n+\tunsigned int seq;\n+\tint ret;\n+\n+\tfor (;;) {\n+\t\tconst char *name;\n+\n+\t\tret = 0;\n+\t\trcu_read_lock();\n+\t\tname = rcu_dereference(dev->ifalias);\n+\t\tseq = raw_seqcount_begin(&ifalias_rename_seq);\n+\t\tif (name)\n+\t\t\tret = snprintf(alias, len, \"%s\", name);\n+\t\trcu_read_unlock();\n+\n+\t\tif (!read_seqcount_retry(&ifalias_rename_seq, seq))\n+\t\t\tbreak;\n+\n+\t\tcond_resched();\n+\t}\n+\n+\treturn ret;\n+}\n \n /**\n  *\tnetdev_features_change - device changes features\n@@ -8749,6 +8795,8 @@ static int __init net_dev_init(void)\n \t\t\t\t       NULL, dev_cpu_dead);\n \tWARN_ON(rc < 0);\n \trc = 0;\n+\n+\tseqcount_init(&ifalias_rename_seq);\n out:\n \treturn rc;\n }\ndiff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c\nindex 927a6dcbad96..530de7996d65 100644\n--- a/net/core/net-sysfs.c\n+++ b/net/core/net-sysfs.c\n@@ -391,10 +391,7 @@ static ssize_t ifalias_store(struct device *dev, struct device_attribute *attr,\n \tif (len >  0 && buf[len - 1] == '\\n')\n \t\t--count;\n \n-\tif (!rtnl_trylock())\n-\t\treturn restart_syscall();\n \tret = dev_set_alias(netdev, buf, count);\n-\trtnl_unlock();\n \n \treturn ret < 0 ? ret : len;\n }\n@@ -403,13 +400,12 @@ static ssize_t ifalias_show(struct device *dev,\n \t\t\t    struct device_attribute *attr, char *buf)\n {\n \tconst struct net_device *netdev = to_net_dev(dev);\n+\tchar tmp[IFALIASZ];\n \tssize_t ret = 0;\n \n-\tif (!rtnl_trylock())\n-\t\treturn restart_syscall();\n-\tif (netdev->ifalias)\n-\t\tret = sprintf(buf, \"%s\\n\", netdev->ifalias);\n-\trtnl_unlock();\n+\tret = dev_get_alias(netdev, tmp, sizeof(tmp));\n+\tif (ret > 0)\n+\t\tret = sprintf(buf, \"%s\\n\", tmp);\n \treturn ret;\n }\n static DEVICE_ATTR_RW(ifalias);\n@@ -1488,7 +1484,7 @@ static void netdev_release(struct device *d)\n \n \tBUG_ON(dev->reg_state != NETREG_RELEASED);\n \n-\tkfree(dev->ifalias);\n+\tdev_set_alias(dev, \"\", 0);\n \tnetdev_freemem(dev);\n }\n \ndiff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c\nindex c69451964a44..bab108ced7d8 100644\n--- a/net/core/rtnetlink.c\n+++ b/net/core/rtnetlink.c\n@@ -1368,10 +1368,11 @@ static int nla_put_iflink(struct sk_buff *skb, const struct net_device *dev)\n \n static noinline int nla_put_ifalias(struct sk_buff *skb, struct net_device *dev)\n {\n-\tif (dev->ifalias)\n-\t\treturn nla_put_string(skb, IFLA_IFALIAS, dev->ifalias);\n+\tchar buf[IFALIASZ];\n+\tint ret;\n \n-\treturn 0;\n+\tret = dev_get_alias(dev, buf, sizeof(buf));\n+\treturn ret > 0 ? nla_put_string(skb, IFLA_IFALIAS, buf) : 0;\n }\n \n static noinline int rtnl_fill_link_netnsid(struct sk_buff *skb,","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 3y03K35gw8z9t4P\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun, 24 Sep 2017 07:24:55 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751149AbdIWVYt (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 23 Sep 2017 17:24:49 -0400","from Chamillionaire.breakpoint.cc ([146.0.238.67]:47010 \"EHLO\n\tChamillionaire.breakpoint.cc\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1750839AbdIWVYs (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 23 Sep 2017 17:24:48 -0400","from fw by Chamillionaire.breakpoint.cc with local (Exim 4.84_2)\n\t(envelope-from <fw@strlen.de>)\n\tid 1dvrrY-0003Ab-AF; Sat, 23 Sep 2017 23:21:24 +0200"],"Date":"Sat, 23 Sep 2017 23:21:24 +0200","From":"Florian Westphal <fw@strlen.de>","To":"Eric Dumazet <eric.dumazet@gmail.com>","Cc":"Florian Westphal <fw@strlen.de>, netdev@vger.kernel.org","Subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","Message-ID":"<20170923212124.GD4324@breakpoint.cc>","References":"<20170923192636.3932-1-fw@strlen.de>\n\t<20170923192636.3932-4-fw@strlen.de>\n\t<1506200690.29839.217.camel@edumazet-glaptop3.roam.corp.google.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<1506200690.29839.217.camel@edumazet-glaptop3.roam.corp.google.com>","User-Agent":"Mutt/1.5.23 (2014-03-12)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1775122,"web_url":"http://patchwork.ozlabs.org/comment/1775122/","msgid":"<20170925.203428.970573407216523903.davem@davemloft.net>","list_archive_url":null,"date":"2017-09-26T03:34:28","subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","submitter":{"id":15,"url":"http://patchwork.ozlabs.org/api/people/15/","name":"David Miller","email":"davem@davemloft.net"},"content":"From: Florian Westphal <fw@strlen.de>\nDate: Sat, 23 Sep 2017 21:26:33 +0200\n\n> @@ -1332,6 +1332,14 @@ static int nla_put_iflink(struct sk_buff *skb, const struct net_device *dev)\n>  \treturn nla_put_u32(skb, IFLA_LINK, ifindex);\n>  }\n>  \n> +static noinline int nla_put_ifalias(struct sk_buff *skb, struct net_device *dev)\n\nPlease do use inline annoations in foo.c files unless there is a very strong\nspecific need.\n\nThank you.","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 3y1RQd3Bk6z9t3F\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 26 Sep 2017 13:34:33 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S966062AbdIZDea (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 23:34:30 -0400","from shards.monkeyblade.net ([184.105.139.130]:40636 \"EHLO\n\tshards.monkeyblade.net\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S933685AbdIZDe3 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 25 Sep 2017 23:34:29 -0400","from localhost (74-93-104-102-Washington.hfc.comcastbusiness.net\n\t[74.93.104.102])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(Client did not present a certificate)\n\t(Authenticated sender: davem-davemloft)\n\tby shards.monkeyblade.net (Postfix) with ESMTPSA id 2D941133F46E0;\n\tMon, 25 Sep 2017 20:34:29 -0700 (PDT)"],"Date":"Mon, 25 Sep 2017 20:34:28 -0700 (PDT)","Message-Id":"<20170925.203428.970573407216523903.davem@davemloft.net>","To":"fw@strlen.de","Cc":"netdev@vger.kernel.org","Subject":"Re: [PATCH net-next v3 3/6] rtnetlink: add helper to dump ifalias","From":"David Miller <davem@davemloft.net>","In-Reply-To":"<20170923192636.3932-4-fw@strlen.de>","References":"<20170923192636.3932-1-fw@strlen.de>\n\t<20170923192636.3932-4-fw@strlen.de>","X-Mailer":"Mew version 6.7 on Emacs 25.3 / Mule 6.0 (HANACHIRUSATO)","Mime-Version":"1.0","Content-Type":"Text/Plain; charset=us-ascii","Content-Transfer-Encoding":"7bit","X-Greylist":"Sender succeeded SMTP AUTH, not delayed by\n\tmilter-greylist-4.5.12 (shards.monkeyblade.net\n\t[149.20.54.216]); Mon, 25 Sep 2017 20:34:29 -0700 (PDT)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]