Moni Shoua e36b9d16c6 bonding: clean muticast addresses when device changes type
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: Moni Shoua <monis@voltaire.com>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-07-16 18:05:23 -07:00
..
2009-07-12 14:20:04 -07:00
2009-07-16 18:05:20 -07:00
2009-04-13 15:16:33 -07:00
2009-07-12 14:20:04 -07:00
2009-04-28 02:05:21 -07:00
2009-07-13 11:11:41 -07:00
2009-06-08 00:21:48 -07:00
2009-07-05 18:03:27 -07:00
2009-07-14 12:03:39 -07:00
2009-07-03 19:10:51 -07:00
2009-07-12 14:20:04 -07:00
2009-05-26 20:35:02 -07:00
2008-12-08 01:14:16 -08:00
2009-05-26 20:35:02 -07:00
2009-05-26 20:35:02 -07:00
2009-05-26 20:35:03 -07:00
2009-07-12 14:20:04 -07:00
2008-11-25 18:12:49 -08:00
2009-04-24 04:45:33 -07:00
2009-05-17 11:59:51 -07:00
2009-05-29 01:46:27 -07:00
2008-11-25 18:25:32 -08:00
2009-04-11 02:53:46 -07:00
2009-01-07 18:10:24 -08:00
2009-04-16 02:20:06 -07:00
2009-04-04 16:51:14 -07:00
2009-03-02 22:32:48 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-03-02 22:32:43 -08:00
2008-09-22 19:27:10 -07:00
2009-06-21 11:00:33 -05:00
2009-05-29 01:46:27 -07:00
2008-02-01 20:54:03 +11:00
2008-11-20 20:28:00 -08:00
2009-01-07 17:30:09 -08:00
2009-01-21 14:33:50 -08:00
2008-11-25 18:23:59 -08:00
2009-07-12 14:20:04 -07:00
2009-07-05 18:03:33 -07:00
2009-02-04 16:43:44 -08:00
2009-02-26 21:02:19 -08:00
2008-11-25 18:24:57 -08:00
2009-04-16 02:20:08 -07:00
2009-05-17 15:19:36 -07:00
2009-01-06 10:47:44 -08:00
2009-06-11 17:23:24 -07:00
2009-05-29 01:46:27 -07:00
2009-05-29 01:51:22 -07:00
2009-06-08 00:20:20 -07:00
2009-03-27 00:46:48 -07:00
2009-04-16 02:20:15 -07:00
2008-11-25 18:24:38 -08:00
2009-04-16 02:20:16 -07:00
2009-04-13 15:16:26 -07:00
2009-06-25 20:06:34 -07:00
2009-04-16 02:20:18 -07:00
2009-04-16 02:20:21 -07:00
2009-04-16 02:20:22 -07:00
2009-03-27 00:46:53 -07:00
2008-03-26 00:18:00 -04:00
2009-03-28 23:37:27 -07:00
2009-06-18 00:29:08 -07:00
2009-07-12 14:20:04 -07:00
2008-01-28 15:11:27 -08:00
2009-06-03 02:51:04 -07:00
2008-11-10 15:11:56 -05:00
2009-06-19 01:12:52 -07:00
2009-04-16 02:20:24 -07:00
2009-04-29 17:32:34 -07:00
2009-01-07 17:56:54 -08:00
2009-04-16 02:20:25 -07:00
2009-05-25 22:49:56 -07:00
2009-05-29 01:46:27 -07:00
2009-06-26 09:28:42 -07:00
2009-06-17 18:46:54 -07:00
2008-01-28 15:11:27 -08:00
2009-01-07 18:09:36 -08:00
2009-07-12 14:20:04 -07:00
2009-04-16 02:20:25 -07:00
2009-03-27 00:46:48 -07:00
2008-04-16 20:06:50 -04:00
2008-11-25 18:25:49 -08:00
2008-08-29 02:13:33 -07:00
2008-01-28 15:07:10 -08:00
2008-08-29 02:14:29 -07:00
2008-08-29 02:14:43 -07:00
2009-07-12 14:20:04 -07:00
2009-06-08 00:21:48 -07:00
2008-05-30 22:18:02 -04:00
2009-01-11 00:06:36 -08:00
2009-04-13 15:16:21 -07:00
2009-05-29 01:46:27 -07:00
2009-01-21 14:02:31 -08:00