br_if.c (93fbff1197474d7b65e598c6f48fa82a5c334539) | br_if.c (920a33cd72314f4ea96b5224fa8c7d4472d81880) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Userspace interface 4 * Linux ethernet bridge 5 * 6 * Authors: 7 * Lennert Buytenhek <buytenh@gnu.org> 8 */ --- 554 unchanged lines hidden (view full) --- 563 bool changed_addr, fdb_synced = false; 564 565 /* Don't allow bridging non-ethernet like devices. */ 566 if ((dev->flags & IFF_LOOPBACK) || 567 dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN || 568 !is_valid_ether_addr(dev->dev_addr)) 569 return -EINVAL; 570 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Userspace interface 4 * Linux ethernet bridge 5 * 6 * Authors: 7 * Lennert Buytenhek <buytenh@gnu.org> 8 */ --- 554 unchanged lines hidden (view full) --- 563 bool changed_addr, fdb_synced = false; 564 565 /* Don't allow bridging non-ethernet like devices. */ 566 if ((dev->flags & IFF_LOOPBACK) || 567 dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN || 568 !is_valid_ether_addr(dev->dev_addr)) 569 return -EINVAL; 570 |
571 /* Also don't allow bridging of net devices that are DSA masters, since 572 * the bridge layer rx_handler prevents the DSA fake ethertype handler 573 * to be invoked, so we don't get the chance to strip off and parse the 574 * DSA switch tag protocol header (the bridge layer just returns 575 * RX_HANDLER_CONSUMED, stopping RX processing for these frames). 576 * The only case where that would not be an issue is when bridging can 577 * already be offloaded, such as when the DSA master is itself a DSA 578 * or plain switchdev port, and is bridged only with other ports from 579 * the same hardware device. 580 */ 581 if (netdev_uses_dsa(dev)) { 582 list_for_each_entry(p, &br->port_list, list) { 583 if (!netdev_port_same_parent_id(dev, p->dev)) { 584 NL_SET_ERR_MSG(extack, 585 "Cannot do software bridging with a DSA master"); 586 return -EINVAL; 587 } 588 } 589 } 590 | |
591 /* No bridging of bridges */ 592 if (dev->netdev_ops->ndo_start_xmit == br_dev_xmit) { 593 NL_SET_ERR_MSG(extack, 594 "Can not enslave a bridge to a bridge"); 595 return -ELOOP; 596 } 597 598 /* Device has master upper dev */ --- 189 unchanged lines hidden --- | 571 /* No bridging of bridges */ 572 if (dev->netdev_ops->ndo_start_xmit == br_dev_xmit) { 573 NL_SET_ERR_MSG(extack, 574 "Can not enslave a bridge to a bridge"); 575 return -ELOOP; 576 } 577 578 /* Device has master upper dev */ --- 189 unchanged lines hidden --- |