From: Wengang Wang <wen.gang.wang@oracle.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH] ip: find correct route for socket which is not bound to a device
Date: Mon, 21 Sep 2015 10:04:59 +0800 [thread overview]
Message-ID: <55FF65CB.1020205@oracle.com> (raw)
In-Reply-To: <20150917.212000.1163539662854684723.davem@davemloft.net>
Hi David,
Thanks for your review on this.
在 2015年09月18日 12:20, David Miller 写道:
> From: Wengang Wang <wen.gang.wang@oracle.com>
> Date: Wed, 16 Sep 2015 14:34:15 +0800
>
>> For multi-cast, we should find valid route(thus get the meaniful pmtu) for
>> the package on the socket which is not bound to a device(sk_bound_dev_if
>> being 0) too.
> Your patch breaks exactly the situation explained in full detail
> in the huge comment about the first change you are making:
>
> /* Special hack: user can direct multicasts
> and limited broadcast via necessary interface
> without fiddling with IP_MULTICAST_IF or IP_PKTINFO.
> This hack is not just for fun, it allows
> vic,vat and friends to work.
> They bind socket to loopback, set ttl to zero
> and expect that it will work.
> From the viewpoint of routing cache they are broken,
> because we are not allowed to build multicast path
> with loopback source addr (look, routing cache
> cannot know, that ttl is zero, so that packet
> will not leave this host and route is valid).
> Luckily, this hack is good workaround.
> */
>
> That situation will now fail after your patch.
Yes, I noticed the above comment before I made the patch. I have
question regarding that
comment: Seems it's talking about the loopback source address(loopback
device interface
is with the index of 1). Do you think we can make something specific to
loopback device and
let the package with other outbound devices go through the routing cache?
> So I cannot apply this patch, sorry.
>
> I know what you want, you want to end up with a cached route that
> will track the PMTU.
Yes, that's exactly what I want.
Actually the user space can work fine by adding a syscall
setsockopt(..., SO_BINDTODEVICE, ..) to
bind socket to the device. Well, the problem here is that there are a
lot of user space applications which
don't bind sockets and they are working fine with old kernel(2.6.39).
When moving to new kernel(4.x),
the problem appeared. And seems it's hard for force all of them change
to bind sockets and recompile.
-- that's the pain. Do you have any idea which won't break the
existing hack but can help with my case?
thanks,
wengang
next prev parent reply other threads:[~2015-09-21 2:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-16 6:34 [PATCH] ip: find correct route for socket which is not bound to a device Wengang Wang
2015-09-18 4:20 ` David Miller
2015-09-21 2:04 ` Wengang Wang [this message]
2015-09-21 4:22 ` 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=55FF65CB.1020205@oracle.com \
--to=wen.gang.wang@oracle.com \
--cc=davem@davemloft.net \
--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).