summaryrefslogtreecommitdiff
path: root/net/bridge/br_input.c
diff options
context:
space:
mode:
authorAnton Altaparmakov <aia21@cantab.net>2005-05-30 21:34:37 +0100
committerAnton Altaparmakov <aia21@cantab.net>2005-05-30 21:34:37 +0100
commit4ff4258a3e558814a3d48c50a59cd22f56bbea2f (patch)
tree35ac4a5d2b162687eef0c38aecf14f3a7c5afee0 /net/bridge/br_input.c
parent442d207eb0b4e7047c4fedccd900c425e689d502 (diff)
parent5e485b7975472ba4a408523deb6541e70c451842 (diff)
downloadlwn-4ff4258a3e558814a3d48c50a59cd22f56bbea2f.tar.gz
lwn-4ff4258a3e558814a3d48c50a59cd22f56bbea2f.zip
Automatic merge with /usr/src/ntfs-2.6.git.
Diffstat (limited to 'net/bridge/br_input.c')
-rw-r--r--net/bridge/br_input.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 2b1cce46cab4..8f5f2e730992 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -26,7 +26,7 @@ static int br_pass_frame_up_finish(struct sk_buff *skb)
#ifdef CONFIG_NETFILTER_DEBUG
skb->nf_debug = 0;
#endif
- netif_rx(skb);
+ netif_receive_skb(skb);
return 0;
}
@@ -54,6 +54,9 @@ int br_handle_frame_finish(struct sk_buff *skb)
struct net_bridge_fdb_entry *dst;
int passedup = 0;
+ /* insert into forwarding database after filtering to avoid spoofing */
+ br_fdb_update(p->br, p, eth_hdr(skb)->h_source);
+
if (br->dev->flags & IFF_PROMISC) {
struct sk_buff *skb2;
@@ -108,8 +111,7 @@ int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
if (!is_valid_ether_addr(eth_hdr(skb)->h_source))
goto err;
- if (p->state == BR_STATE_LEARNING ||
- p->state == BR_STATE_FORWARDING)
+ if (p->state == BR_STATE_LEARNING)
br_fdb_update(p->br, p, eth_hdr(skb)->h_source);
if (p->br->stp_enabled &&