diff options
Diffstat (limited to 'net/tipc')
| -rw-r--r-- | net/tipc/eth_media.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c index 77d2d9ce8962..711ca4b1f051 100644 --- a/net/tipc/eth_media.c +++ b/net/tipc/eth_media.c | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * net/tipc/eth_media.c: Ethernet bearer support for TIPC | 2 | * net/tipc/eth_media.c: Ethernet bearer support for TIPC |
| 3 | * | 3 | * |
| 4 | * Copyright (c) 2001-2006, Ericsson AB | 4 | * Copyright (c) 2001-2007, Ericsson AB |
| 5 | * Copyright (c) 2005-2006, Wind River Systems | 5 | * Copyright (c) 2005-2007, Wind River Systems |
| 6 | * All rights reserved. | 6 | * All rights reserved. |
| 7 | * | 7 | * |
| 8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
| @@ -87,6 +87,9 @@ static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, | |||
| 87 | /** | 87 | /** |
| 88 | * recv_msg - handle incoming TIPC message from an Ethernet interface | 88 | * recv_msg - handle incoming TIPC message from an Ethernet interface |
| 89 | * | 89 | * |
| 90 | * Accept only packets explicitly sent to this node, or broadcast packets; | ||
| 91 | * ignores packets sent using Ethernet multicast, and traffic sent to other | ||
| 92 | * nodes (which can happen if interface is running in promiscuous mode). | ||
| 90 | * Routine truncates any Ethernet padding/CRC appended to the message, | 93 | * Routine truncates any Ethernet padding/CRC appended to the message, |
| 91 | * and ensures message size matches actual length | 94 | * and ensures message size matches actual length |
| 92 | */ | 95 | */ |
| @@ -98,9 +101,7 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev, | |||
| 98 | u32 size; | 101 | u32 size; |
| 99 | 102 | ||
| 100 | if (likely(eb_ptr->bearer)) { | 103 | if (likely(eb_ptr->bearer)) { |
| 101 | if (likely(!dev->promiscuity) || | 104 | if (likely(buf->pkt_type <= PACKET_BROADCAST)) { |
| 102 | !memcmp(skb_mac_header(buf), dev->dev_addr, ETH_ALEN) || | ||
| 103 | !memcmp(skb_mac_header(buf), dev->broadcast, ETH_ALEN)) { | ||
| 104 | size = msg_size((struct tipc_msg *)buf->data); | 105 | size = msg_size((struct tipc_msg *)buf->data); |
| 105 | skb_trim(buf, size); | 106 | skb_trim(buf, size); |
| 106 | if (likely(buf->len == size)) { | 107 | if (likely(buf->len == size)) { |
