Hi David,
Thanks for your review on this.
在 2015年09月18日 12:20, David Miller 写道:
From: Wengang Wang <wen.gang.w...@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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html