Skip to content
  • Asbjoern Sloth Toennesen's avatar
    rtnetlink: rtnl_bridge_getlink: Call nlmsg_find_attr() with ifinfomsg header · 3e805ad2
    Asbjoern Sloth Toennesen authored
    Fix the iproute2 command `bridge vlan show`, after switching from
    rtgenmsg to ifinfomsg.
    
    Let's start with a little history:
    
    Feb 20:   Vlad Yasevich got his VLAN-aware bridge patchset included in
              the 3.9 merge window.
              In the kernel commit 6cbdceeb, he added attribute support to
              bridge GETLINK requests sent with rtgenmsg.
    
    Mar 6th:  Vlad got this iproute2 reference implementation of the bridge
              vlan netlink interface accepted (iproute2 9eff0e5c)
    
    Apr 25th: iproute2 switched from using rtgenmsg to ifinfomsg (63338dca)
              http://patchwork.ozlabs.org/patch/239602/
              http://marc.info/?t=136680900700007
    
    Apr 28th: Linus released 3.9
    
    Apr 30th: Stephen released iproute2 3.9.0
    
    The `bridge vlan show` command haven't been working since the switch to
    ifinfomsg, or in a released version of iproute2. Since the kernel side
    only supports rtgenmsg, which iproute2 switched away from just prior to
    the iproute2 3.9.0 release.
    
    I haven't been able to find any documentation, about neither rtgenmsg
    nor ifinfomsg, and in which situation to use which, but kernel commit
    88c5b5ce
    
     seams to suggest that ifinfomsg should be used.
    
    Fixing this in kernel will break compatibility, but I doubt that anybody
    have been using it due to this bug in the user space reference
    implementation, at least not without noticing this bug. That said the
    functionality is still fully functional in 3.9, when reversing iproute2
    commit 63338dca.
    
    This could also be fixed in iproute2, but thats an ugly patch that would
    reintroduce rtgenmsg in iproute2, and from searching in netdev it seams
    like rtgenmsg usage is discouraged. I'm assuming that the only reason
    that Vlad implemented the kernel side to use rtgenmsg, was because
    iproute2 was using it at the time.
    
    Signed-off-by: default avatarAsbjoern Sloth Toennesen <ast@fiberby.net>
    Reviewed-by: default avatarVlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3e805ad2