bridge: Introduce BR_PROMISC flag
authorVlad Yasevich <vyasevic@redhat.com>
Fri, 16 May 2014 13:59:18 +0000 (09:59 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 May 2014 21:06:33 +0000 (17:06 -0400)
Introduce a BR_PROMISC per-port flag that will help us track if the
current port is supposed to be in promiscuous mode or not.  For now,
always start in promiscuous mode.

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_if.c
net/bridge/br_private.h

index f7ef5f2..3fefff9 100644 (file)
@@ -238,7 +238,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
        p->path_cost = port_cost(dev);
        p->priority = 0x8000 >> BR_PORT_BITS;
        p->port_no = index;
-       p->flags = BR_LEARNING | BR_FLOOD;
+       p->flags = BR_LEARNING | BR_FLOOD | BR_PROMISC;
        br_init_port(p);
        p->state = BR_STATE_DISABLED;
        br_stp_port_timer_init(p);
index c0a804b..00922a4 100644 (file)
@@ -175,6 +175,7 @@ struct net_bridge_port
 #define BR_LEARNING            0x00000020
 #define BR_FLOOD               0x00000040
 #define BR_AUTO_MASK (BR_FLOOD | BR_LEARNING)
+#define BR_PROMISC             0x00000080
 
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
        struct bridge_mcast_query       ip4_query;
@@ -200,6 +201,7 @@ struct net_bridge_port
 };
 
 #define br_auto_port(p) ((p)->flags & BR_AUTO_MASK)
+#define br_promisc_port(p) ((p)->flags & BR_PROMISC)
 
 #define br_port_exists(dev) (dev->priv_flags & IFF_BRIDGE_PORT)