On September 27, 2018 10:24:36 PM GMT+02:00, David Ahern <dsah...@gmail.com> wrote: >On 9/27/18 11:58 AM, Christian Brauner wrote: >> Various userspace programs (e.g. iproute2) have sent RTM_GETADDR >> requests with struct ifinfomsg. This is wrong and should have been >> struct ifaddrmsg all along as mandated by the manpages. However, dump >> requests so far didn't parse the netlink message that was sent and >> succeeded even when a wrong struct was passed along. > >... > >> The correct solution at this point seems to me to introduce a new >> RTM_GETADDR2 request. This way we can parse the message and fail hard >if >> the struct is not struct ifaddrmsg and can safely extend it in the >> future. Userspace tools that rely on the buggy RTM_GETADDR API will >> still keep working without even having to see any log messages and >new >> userspace tools that want to make user of new features can make use >of >> the new RTM_GETADDR2 requests. > >First, I think this is the wrong precedent when all we need is a single >bit flag that userspace can use to tell the kernel "I have a clue and I >am passing in the proper header for this dump request".
That had been NAKed previously but if you have an idea that will be accepted all the more power to you. > >Second, you are not addressing the problems of the past by requiring >the >proper header and checking values passed in it. I don't follow. RTM_GETADDR requests are absolutely unchanged. The full legacy behavior is restored by this patchset. And requiring that RTM_GETADDR2 requests always pass the correct header is absolutely fine. We don't want built invalid legacy behavior into a new request type. > >I have another idea. I'll send an RFC patch soon.