• Moni Shoua's avatar
    bonding: clean muticast addresses when device changes type · e36b9d16
    Moni Shoua authored
    Bonding device forbids slave device of different types under the same
    master.
    
    However, it is possible for a bonding master to change type during its
    lifetime.  This can be either from ARPHRD_ETHER to ARPHRD_INFINIBAND
    or the other way arround.  The change of type requires device level
    multicast address cleanup because device level multicast addresses
    depend on the device type.
    
    The patch adds a call to dev_close() before the bonding master changes
    type and dev_open() just after that.
    
    In the example below I enslaved an IPoIB device (ib0) under
    bond0. Since each bonding master starts as device of type ARPHRD_ETHER
    by default, a change of type occurs when ib0 is enslaved.
    
    This is how /proc/net/dev_mcast looks like without the patch
    
    5    bond0           1     0     00ffffffff12601bffff000000000001ff96ca05
    5    bond0           1     0     01005e000116
    5    bond0           1     0     01005e7ffffd
    5    bond0           1     0     01005e000001
    5    bond0           1     0     333300000001
    6    ib0             1     0     00ffffffff12601bffff000000000001ff96ca05
    6    ib0             1     0     333300000001
    6    ib0             1     0     01005e000001
    6    ib0             1     0     01005e7ffffd
    6    ib0             1     0     01005e000116
    6    ib0             1     0     00ffffffff12401bffff00000000000000000001
    6    ib0             1     0     00ffffffff12601bffff00000000000000000001
    
    and this is how it looks like after the patch.
    
    5    bond0           1     0     00ffffffff12601bffff000000000001ff96ca05
    5    bond0           1     0     00ffffffff12601bffff00000000000000000001
    5    bond0           1     0     00ffffffff12401bffff0000000000000ffffffd
    5    bond0           1     0     00ffffffff12401bffff00000000000000000116
    5    bond0           1     0     00ffffffff12401bffff00000000000000000001
    6    ib0             1     0     00ffffffff12601bffff000000000001ff96ca05
    6    ib0             1     0     00ffffffff12401bffff00000000000000000116
    6    ib0             1     0     00ffffffff12401bffff0000000000000ffffffd
    6    ib0             2     0     00ffffffff12401bffff00000000000000000001
    6    ib0             2     0     00ffffffff12601bffff00000000000000000001
    Signed-off-by: default avatarMoni Shoua <monis@voltaire.com>
    Signed-off-by: default avatarJay Vosburgh <fubar@us.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e36b9d16
bond_main.c 134 KB