bonding: remap muticast addresses without using dev_close() and dev_open()
This patch fixes commit e36b9d16c6
. The approach
there is to call dev_close()/dev_open() whenever the device type is changed in
order to remap the device IP multicast addresses to HW multicast addresses.
This approach suffers from 2 drawbacks:
*. It assumes tha the device is UP when calling dev_close(), or otherwise
dev_close() has no affect. It is worth to mention that initscripts (Redhat)
and sysconfig (Suse) doesn't act the same in this matter.
*. dev_close() has other side affects, like deleting entries from the routing
table, which might be unnecessary.
The fix here is to directly remap the IP multicast addresses to HW multicast
addresses for a bonding device that changes its type, and nothing else.
Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Moni Shoua <monis@voltaire.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
481a819914
commit
75c78500dd
@ -143,6 +143,8 @@ extern int __ipv6_dev_mc_dec(struct inet6_dev *idev, const struct in6_addr *addr
|
||||
extern int ipv6_dev_mc_dec(struct net_device *dev, const struct in6_addr *addr);
|
||||
extern void ipv6_mc_up(struct inet6_dev *idev);
|
||||
extern void ipv6_mc_down(struct inet6_dev *idev);
|
||||
extern void ipv6_mc_unmap(struct inet6_dev *idev);
|
||||
extern void ipv6_mc_remap(struct inet6_dev *idev);
|
||||
extern void ipv6_mc_init_dev(struct inet6_dev *idev);
|
||||
extern void ipv6_mc_destroy_dev(struct inet6_dev *idev);
|
||||
extern void addrconf_dad_failure(struct inet6_ifaddr *ifp);
|
||||
|
Reference in New Issue
Block a user