Merge tag 'media/v5.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[linux-2.6-microblaze.git] / net / bridge / br_private.h
index ce2ab14..36b0367 100644 (file)
@@ -172,6 +172,16 @@ struct net_bridge_vlan_group {
        u16                             pvid;
 };
 
+/* bridge fdb flags */
+enum {
+       BR_FDB_LOCAL,
+       BR_FDB_STATIC,
+       BR_FDB_STICKY,
+       BR_FDB_ADDED_BY_USER,
+       BR_FDB_ADDED_BY_EXT_LEARN,
+       BR_FDB_OFFLOADED,
+};
+
 struct net_bridge_fdb_key {
        mac_addr addr;
        u16 vlan_id;
@@ -183,12 +193,7 @@ struct net_bridge_fdb_entry {
 
        struct net_bridge_fdb_key       key;
        struct hlist_node               fdb_node;
-       unsigned char                   is_local:1,
-                                       is_static:1,
-                                       is_sticky:1,
-                                       added_by_user:1,
-                                       added_by_external_learn:1,
-                                       offloaded:1;
+       unsigned long                   flags;
 
        /* write-heavy members should not affect lookups */
        unsigned long                   updated ____cacheline_aligned_in_smp;
@@ -495,6 +500,11 @@ static inline bool br_vlan_should_use(const struct net_bridge_vlan *v)
        return true;
 }
 
+static inline bool nbp_state_should_learn(const struct net_bridge_port *p)
+{
+       return p->state == BR_STATE_LEARNING || p->state == BR_STATE_FORWARDING;
+}
+
 static inline int br_opt_get(const struct net_bridge *br,
                             enum net_bridge_opts opt)
 {
@@ -566,7 +576,7 @@ int br_fdb_fillbuf(struct net_bridge *br, void *buf, unsigned long count,
 int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
                  const unsigned char *addr, u16 vid);
 void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source,
-                  const unsigned char *addr, u16 vid, bool added_by_user);
+                  const unsigned char *addr, u16 vid, unsigned long flags);
 
 int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],
                  struct net_device *dev, const unsigned char *addr, u16 vid);