bridge: prevent bridging wrong device
The bridge code assumes ethernet addressing, so be more strict in the what is allowed. This showed up when GRE had a bug and was not using correct address format. Add some more comments for increased clarity. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
22402529df
Коммит
1056bd5167
|
@ -377,12 +377,16 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
|
|||
struct net_bridge_port *p;
|
||||
int err = 0;
|
||||
|
||||
if (dev->flags & IFF_LOOPBACK || dev->type != ARPHRD_ETHER)
|
||||
/* Don't allow bridging non-ethernet like devices */
|
||||
if ((dev->flags & IFF_LOOPBACK) ||
|
||||
dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN)
|
||||
return -EINVAL;
|
||||
|
||||
/* No bridging of bridges */
|
||||
if (dev->netdev_ops->ndo_start_xmit == br_dev_xmit)
|
||||
return -ELOOP;
|
||||
|
||||
/* Device is already being bridged */
|
||||
if (dev->br_port != NULL)
|
||||
return -EBUSY;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче