diff options
Diffstat (limited to 'net/bridge/br_input.c')
-rw-r--r-- | net/bridge/br_input.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 787d7dad6b7e..a63f227ad963 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c | |||
@@ -45,6 +45,10 @@ static int br_pass_frame_up(struct sk_buff *skb) | |||
45 | return NET_RX_DROP; | 45 | return NET_RX_DROP; |
46 | } | 46 | } |
47 | 47 | ||
48 | skb = br_handle_vlan(br, br_get_vlan_info(br), skb); | ||
49 | if (!skb) | ||
50 | return NET_RX_DROP; | ||
51 | |||
48 | indev = skb->dev; | 52 | indev = skb->dev; |
49 | skb->dev = brdev; | 53 | skb->dev = brdev; |
50 | 54 | ||
@@ -61,11 +65,12 @@ int br_handle_frame_finish(struct sk_buff *skb) | |||
61 | struct net_bridge_fdb_entry *dst; | 65 | struct net_bridge_fdb_entry *dst; |
62 | struct net_bridge_mdb_entry *mdst; | 66 | struct net_bridge_mdb_entry *mdst; |
63 | struct sk_buff *skb2; | 67 | struct sk_buff *skb2; |
68 | u16 vid = 0; | ||
64 | 69 | ||
65 | if (!p || p->state == BR_STATE_DISABLED) | 70 | if (!p || p->state == BR_STATE_DISABLED) |
66 | goto drop; | 71 | goto drop; |
67 | 72 | ||
68 | if (!br_allowed_ingress(p->br, nbp_get_vlan_info(p), skb)) | 73 | if (!br_allowed_ingress(p->br, nbp_get_vlan_info(p), skb, &vid)) |
69 | goto drop; | 74 | goto drop; |
70 | 75 | ||
71 | /* insert into forwarding database after filtering to avoid spoofing */ | 76 | /* insert into forwarding database after filtering to avoid spoofing */ |