public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Hannes Frederic Sowa <hannes@stressinduktion•org>
To: David Ahern <dsahern@gmail•com>
Cc: netdev@vger•kernel.org, yoshfuji@linux-ipv6•org
Subject: Re: [PATCH v2 net-next] net: ipv6: put host and anycast routes on device with address
Date: Fri, 18 Aug 2017 20:28:53 -0400	[thread overview]
Message-ID: <87inhkl7sq.fsf@stressinduktion.org> (raw)
In-Reply-To: <0bcba874-7fc3-508c-bf78-ae5832312845@gmail.com> (David Ahern's message of "Fri, 18 Aug 2017 18:14:18 -0600")

David Ahern <dsahern@gmail•com> writes:

> On 8/18/17 6:05 PM, David Ahern wrote:
>> On 8/18/17 5:15 PM, Hannes Frederic Sowa wrote:
>>> Hello David,
>>>
>>> David Ahern <dsahern@gmail•com> writes:
>>>
>>>> @@ -2688,15 +2716,9 @@ struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
>>>>  {
>>>>  	u32 tb_id;
>>>>  	struct net *net = dev_net(idev->dev);
>>>> -	struct net_device *dev = net->loopback_dev;
>>>> +	struct net_device *dev = idev->dev;
>>>>  	struct rt6_info *rt;
>>>>  
>>>> -	/* use L3 Master device as loopback for host routes if device
>>>> -	 * is enslaved and address is not link local or multicast
>>>> -	 */
>>>> -	if (!rt6_need_strict(addr))
>>>> -		dev = l3mdev_master_dev_rcu(idev->dev) ? : dev;
>>>> -
>>>>  	rt = ip6_dst_alloc(net, dev, DST_NOCOUNT);
>>>>  	if (!rt)
>>>>  		return ERR_PTR(-ENOMEM);
>>>
>>> I am afraid this change might break Java:
>>>
>>> <http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/65464a307408/src/java.base/unix/native/libnet/net_util_md.c#l574>
>>>
>>> I am all in for this change, but maybe it might be necessary to mask
>>> RTF_LOCAL routes with "lo" somehow.
>> 
>> That's asinine. The if_inet6 processing is just getting the 'lo'
>> interface index. Why scan the file looking for that? The ipv6_route
>> processing is assembling routes against the loopback device regardless
>> of what the route is. Do you know why - what the route list is used for?
>
>
> If I read it correctly, seems to be a 2.4 workaround:
> - only user of the route list is needsLoopbackRoute()
> - only caller of needsLoopbackRoute is here:
>
> http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/65464a307408/src/java.base/unix/native/libnet/net_util_md.c#l828

I agree that it looks like dead code now. But I know for sure that this
code has been excercised at least at some point in time and caused
problems for JVMs on Linux with IPv6.

On the top of this file I found this comment:

-- >8 --
/* following code creates a list of addresses from the kernel
 * routing table that are routed via the loopback address.
 * We check all destination addresses against this table
 * and override the scope_id field to use the relevant value for "lo"
 * in order to work-around the Linux bug that prevents packets destined
 * for certain local addresses from being sent via a physical interface.
 */
-- 8< --

I don't know if it makes sense to dive down into java history (and I
also found e.g. net-snmp scanning /proc/net/ipv6_route). The same
problem might be visible via RTM_GETROUTE dumps if applications
implement their own source address selection maybe. :/

Bye, Hannes

  reply	other threads:[~2017-08-19  0:28 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-17 19:17 [PATCH v2 net-next] net: ipv6: put host and anycast routes on device with address David Ahern
2017-08-18 23:15 ` Hannes Frederic Sowa
2017-08-19  0:05   ` David Ahern
2017-08-19  0:14     ` David Ahern
2017-08-19  0:28       ` Hannes Frederic Sowa [this message]
2017-08-21 13:19         ` David Ahern
2017-08-20  4:53     ` David Miller
2017-08-21 17:41 ` David Miller

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=87inhkl7sq.fsf@stressinduktion.org \
    --to=hannes@stressinduktion$(echo .)org \
    --cc=dsahern@gmail$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=yoshfuji@linux-ipv6$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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