From: Stephen Hemminger <stephen@networkplumber.org>
To: David Ahern <dsa@cumulusnetworks.com>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH iproute2] ip route: Make name of protocol 0 consistent
Date: Mon, 6 Feb 2017 14:01:07 -0800 [thread overview]
Message-ID: <20170206140107.41569a73@xeon-e3> (raw)
In-Reply-To: <1486056126-23900-1-git-send-email-dsa@cumulusnetworks.com>
On Thu, 2 Feb 2017 09:22:06 -0800
David Ahern <dsa@cumulusnetworks.com> wrote:
> iproute2 can inconsistently show the name of protocol 0 if a route with
> a custom protocol is added. For example:
> dsa@cartman:~$ ip -6 ro ls table all | egrep 'proto none|proto unspec'
> local ::1 dev lo table local proto none metric 0 pref medium
> local fe80::225:90ff:fecb:1c18 dev lo table local proto none metric 0 pref medium
> local fe80::92e2:baff:fe5c:da5d dev lo table local proto none metric 0 pref medium
>
> protocol 0 is pretty printed as "none". Add a route with a custom protocol:
> dsa@cartman:~$ sudo ip -6 ro add 2001:db8:200::1/128 dev eth0 proto 123
>
> And now display has switched from "none" to "unspec":
> dsa@cartman:~$ ip -6 ro ls table all | egrep 'proto none|proto unspec'
> local ::1 dev lo table local proto unspec metric 0 pref medium
> local fe80::225:90ff:fecb:1c18 dev lo table local proto unspec metric 0 pref medium
> local fe80::92e2:baff:fe5c:da5d dev lo table local proto unspec metric 0 pref medium
>
> The rt_protos file has the id to name mapping as "unspec" while
> rtnl_rtprot_tab[0] has "none". The presence of a custom protocol id
> triggers reading the rt_protos file and overwriting the string in
> rtnl_rtprot_tab. All of this is logic from 2004 and earlier.
>
> The simplest change to achieve consistency is to update the rt_protos
> file to use "none" instead of "unspec".
>
> Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
> ---
> etc/iproute2/rt_protos | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/etc/iproute2/rt_protos b/etc/iproute2/rt_protos
> index 82cf9c46cf6f..21af85b9d7e1 100644
> --- a/etc/iproute2/rt_protos
> +++ b/etc/iproute2/rt_protos
> @@ -1,7 +1,7 @@
> #
> # Reserved protocols.
> #
> -0 unspec
> +0 none
> 1 redirect
> 2 kernel
> 3 boot
This doesn't look like a good solution, you loose the value of unspec.
Just to clarify. You added a custom protocol value to netlink.
And then you are using upstream iproute2 source to display the value.
The correct behavior in that case would be for upstream ip route show command to display
a numeric value (rather than a symbolic name).
But if you are shipping your own version of iproute then add an additional entry
to rt_protos with your new name, and for sanity update the local copy of rtnetlink.h
Of course, submitting your custom protocol upstream is the best long term solution.
next prev parent reply other threads:[~2017-02-06 22:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-02 17:22 [PATCH iproute2] ip route: Make name of protocol 0 consistent David Ahern
2017-02-06 22:01 ` Stephen Hemminger [this message]
2017-02-06 23:03 ` David Ahern
2017-02-07 17:00 ` David Ahern
2017-02-07 21:40 ` Stephen Hemminger
2017-02-07 21:51 ` David Ahern
2017-02-07 22:19 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170206140107.41569a73@xeon-e3 \
--to=stephen@networkplumber.org \
--cc=dsa@cumulusnetworks.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).