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

Reply via email to