From: Shmulik Hen <shmulik.hen@in...> - 2003-06-02 13:33:23
> Promisc/Allmulti flags - it seems that this operates as expected since in
> active backup mode only the active slave is set while in other modes all
> slaves are set (using debug prints). However, the new settings are not
> reflected in ifconfig where only the bond device shows the flags changes
> and the slaves do not.
I may have spoken too soon. After further investigation we discovered that
the whole idea of using dev_set_promiscuity() that uses an internal
counter while bonding itself uses the IFF_PROMISC flag which is boolean
may lead to many problems. Here are just two sample problematic scenarios:
1) - Create a bond in active backup mode.
- Enslave 2 interfaces (e.g. eth0, eth1).
- Put bond0 in promiscuous mode.
Now the bond device and the current slave (say eth0) are promiscuous,
but eth1 is not (since it was in BACKUP state)
- Release eth1 from the bond. Since its master is promiscuous, bonding
will call dev_set_promiscuity(eth1, -1), and put eth1's promisc
counter at -1 (illegal, and actually enables promiscuity on eth1).
2) - Create 2 hierarchical bond interfaces (say bond0 as a slave of bond1).
- Do: `ifconfig bond1 promisc`
bonding will call dev_set_promiscuity() on bond1's slaves (i.e.
bond0), but since there's no notifier, bond0 doesn't know about its
changed status, and doesn't propagate the info to its own slaves.
What I meant by saying it seems to work was related to the way the
propagation works differently for aggregation modes compared with modes
using an active interface.
| Shmulik Hen |
| Israel Design Center (Jerusalem) |
| LAN Access Division |
| Intel Communications Group, Intel corp. |