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 ---