From 8a780739c35fa10e4f8e7a7ee54324e297707c74 Mon Sep 17 00:00:00 2001 From: Andy Gospodarek Date: Wed, 2 Jul 2008 16:23:07 -0400 Subject: [PATCH] bonding: keep all traffic when inactive device in promiscuous mode RHBZ 448144 This should keep all traffic that might normally get dropped when the inactive slave is in promiscuous mode. This is valuable for some network management applications where traffic going to all hosts (like CDP traffic) might need to be observed by an application running on the host. --- net/core/dev.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 9050b21..66a8cc5 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1508,11 +1508,16 @@ inline struct net_device *skb_bond(struct sk_buff *skb) if (dev->master) { if (skb_bond_should_drop(skb)) { - kfree_skb(skb); - return NULL; + /* keep frames we might want to see with tcpdump */ + if (!(dev->flags & IFF_PROMISC)) { + kfree_skb(skb); + return NULL; + } + } + else { + skb->real_dev = skb->dev; + skb->dev = dev->master; } - skb->real_dev = skb->dev; - skb->dev = dev->master; } return dev; -- 1.5.2.1