mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 22:54:01 +00:00
team: reset team's flags when down link is P2P device
[ Upstream commitfa532bee17
] When adding a point to point downlink to team device, we neglected to reset the team's flags, which were still using flags like BROADCAST and MULTICAST. Consequently, this would initiate ARP/DAD for P2P downlink interfaces, such as when adding a GRE device to team device. Fix this by remove multicast/broadcast flags and add p2p and noarp flags. After removing the none ethernet interface and adding an ethernet interface to team, we need to reset team interface flags. Unlike bonding interface, team do not need restore IFF_MASTER, IFF_SLAVE flags. Reported-by: Liang Li <liali@redhat.com> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2221438 Fixes:1d76efe157
("team: add support for non-ethernet devices") Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4c50927853
commit
517a4f3b09
1 changed files with 9 additions and 0 deletions
|
@ -2135,6 +2135,15 @@ static void team_setup_by_port(struct net_device *dev,
|
||||||
dev->mtu = port_dev->mtu;
|
dev->mtu = port_dev->mtu;
|
||||||
memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len);
|
memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len);
|
||||||
eth_hw_addr_inherit(dev, port_dev);
|
eth_hw_addr_inherit(dev, port_dev);
|
||||||
|
|
||||||
|
if (port_dev->flags & IFF_POINTOPOINT) {
|
||||||
|
dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
|
||||||
|
dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);
|
||||||
|
} else if ((port_dev->flags & (IFF_BROADCAST | IFF_MULTICAST)) ==
|
||||||
|
(IFF_BROADCAST | IFF_MULTICAST)) {
|
||||||
|
dev->flags |= (IFF_BROADCAST | IFF_MULTICAST);
|
||||||
|
dev->flags &= ~(IFF_POINTOPOINT | IFF_NOARP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int team_dev_type_check_change(struct net_device *dev,
|
static int team_dev_type_check_change(struct net_device *dev,
|
||||||
|
|
Loading…
Reference in a new issue