]> Pileus Git - ~andy/linux/blobdiff - net/bridge/br_private.h
bridge: Separate egress policy bitmap
[~andy/linux] / net / bridge / br_private.h
index 799dbb37e5a2353ed35f21b68f102fdb60590261..6d314c4e6bcbca8aa68da999e6117879cda9db12 100644 (file)
@@ -75,6 +75,7 @@ struct net_port_vlans {
        }                               parent;
        struct rcu_head                 rcu;
        unsigned long                   vlan_bitmap[BR_VLAN_BITMAP_LEN];
+       unsigned long                   untagged_bitmap[BR_VLAN_BITMAP_LEN];
        u16                             num_vlans;
 };
 
@@ -382,11 +383,13 @@ extern int br_fdb_fillbuf(struct net_bridge *br, void *buf,
                          unsigned long count, unsigned long off);
 extern int br_fdb_insert(struct net_bridge *br,
                         struct net_bridge_port *source,
-                        const unsigned char *addr);
+                        const unsigned char *addr,
+                        u16 vid);
 extern void br_fdb_update(struct net_bridge *br,
                          struct net_bridge_port *source,
                          const unsigned char *addr,
                          u16 vid);
+extern int fdb_delete_by_addr(struct net_bridge *br, const u8 *addr, u16 vid);
 
 extern int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],
                         struct net_device *dev,
@@ -573,6 +576,7 @@ extern int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val);
 extern int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags);
 extern int nbp_vlan_delete(struct net_bridge_port *port, u16 vid);
 extern void nbp_vlan_flush(struct net_bridge_port *port);
+extern bool nbp_vlan_find(struct net_bridge_port *port, u16 vid);
 
 static inline struct net_port_vlans *br_get_vlan_info(
                                                const struct net_bridge *br)
@@ -676,6 +680,11 @@ static inline struct net_port_vlans *nbp_get_vlan_info(
        return NULL;
 }
 
+static inline bool nbp_vlan_find(struct net_bridge_port *port, u16 vid)
+{
+       return false;
+}
+
 static inline u16 br_vlan_get_tag(const struct sk_buff *skb, u16 *tag)
 {
        return 0;