]> Pileus Git - ~andy/linux/blobdiff - net/bridge/br_device.c
bridge: Implement vlan ingress/egress policy with PVID.
[~andy/linux] / net / bridge / br_device.c
index 35a2c2c84f33d6dc26771b9c54557d5bfb271e10..9509139da49c4d65942000ff7af7724530ef9027 100644 (file)
@@ -30,6 +30,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
        struct net_bridge_fdb_entry *dst;
        struct net_bridge_mdb_entry *mdst;
        struct br_cpu_netstats *brstats = this_cpu_ptr(br->stats);
+       u16 vid = 0;
 
        rcu_read_lock();
 #ifdef CONFIG_BRIDGE_NETFILTER
@@ -45,7 +46,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
        brstats->tx_bytes += skb->len;
        u64_stats_update_end(&brstats->syncp);
 
-       if (!br_allowed_ingress(br, br_get_vlan_info(br), skb))
+       if (!br_allowed_ingress(br, br_get_vlan_info(br), skb, &vid))
                goto out;
 
        BR_INPUT_SKB_CB(skb)->brdev = dev;
@@ -316,6 +317,7 @@ static const struct net_device_ops br_netdev_ops = {
        .ndo_fdb_dump            = br_fdb_dump,
        .ndo_bridge_getlink      = br_getlink,
        .ndo_bridge_setlink      = br_setlink,
+       .ndo_bridge_dellink      = br_dellink,
 };
 
 static void br_dev_free(struct net_device *dev)