• Veaceslav Falico's avatar
    bonding: make bond_arp_send_all use upper device list · 27bc11e6
    Veaceslav Falico authored
    Currently, bond_arp_send_all() is aware only of vlans, which breaks
    configurations like bond <- bridge (or any other 'upper' device) with IP
    (which is quite a common scenario for virt setups).
    
    To fix this we convert the bond_arp_send_all() to first verify if the rt
    device is the bond itself, and if not - to go through its list of upper
    vlans and their respectiv upper devices (if the vlan's upper device matches
    - tag the packet), if still not found - go through all of our upper list
    devices to see if any of them match the route device for the target. If the
    match is a vlan device - we also save its vlan_id and tag it in
    bond_arp_send().
    
    Also, clean the function a bit to be more readable.
    
    CC: Vlad Yasevich <vyasevic@redhat.com>
    CC: Jay Vosburgh <fubar@us.ibm.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: default avatarVeaceslav Falico <vfalico@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    27bc11e6
bond_main.c 129 KB