]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/bridge/br_private.h
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / net / bridge / br_private.h
index 22915c8e9961aca3145d10009ed775203c7b263f..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,13 +383,15 @@ 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,
+extern int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],
                         struct net_device *dev,
                         const unsigned char *addr);
 extern int br_fdb_add(struct ndmsg *nlh, struct nlattr *tb[],
@@ -573,17 +576,18 @@ 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)
 {
-       return rcu_dereference(br->vlan_info);
+       return rcu_dereference_rtnl(br->vlan_info);
 }
 
 static inline struct net_port_vlans *nbp_get_vlan_info(
                                                const struct net_bridge_port *p)
 {
-       return rcu_dereference(p->vlan_info);
+       return rcu_dereference_rtnl(p->vlan_info);
 }
 
 /* Since bridge now depends on 8021Q module, but the time bridge sees the
@@ -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;