From c942053384f9c71caaf25203c7c1d96a26a70ed0 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Tue, 28 Jun 2005 16:04:44 -0700 Subject: [PATCH] --- yaml --- r: 3925 b: refs/heads/master c: 9666dae51013b064e7d77fc36b5cee98dd167ed5 h: refs/heads/master i: 3923: a081d99328866df93798107d515ac1a2a737e8f3 v: v3 --- [refs] | 2 +- trunk/net/bridge/br_netfilter.c | 2 +- trunk/net/ipv4/ip_output.c | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 618b5af114f6..65ad97ea9d75 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bcd61272db5e643b6d9c01c9d5085b914d9f19df +refs/heads/master: 9666dae51013b064e7d77fc36b5cee98dd167ed5 diff --git a/trunk/net/bridge/br_netfilter.c b/trunk/net/bridge/br_netfilter.c index 03ae4edddac3..2d52fee63a8c 100644 --- a/trunk/net/bridge/br_netfilter.c +++ b/trunk/net/bridge/br_netfilter.c @@ -844,7 +844,7 @@ static unsigned int ip_sabotage_out(unsigned int hook, struct sk_buff **pskb, * doesn't use the bridge parent of the indev by using * the BRNF_DONT_TAKE_PARENT mask. */ if (hook == NF_IP_FORWARD && nf_bridge->physindev == NULL) { - nf_bridge->mask &= BRNF_DONT_TAKE_PARENT; + nf_bridge->mask |= BRNF_DONT_TAKE_PARENT; nf_bridge->physindev = (struct net_device *)in; } #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) diff --git a/trunk/net/ipv4/ip_output.c b/trunk/net/ipv4/ip_output.c index ee07aec215a0..6ce5c3292f9f 100644 --- a/trunk/net/ipv4/ip_output.c +++ b/trunk/net/ipv4/ip_output.c @@ -188,7 +188,13 @@ static inline int ip_finish_output2(struct sk_buff *skb) skb = skb2; } - nf_reset(skb); +#ifdef CONFIG_BRIDGE_NETFILTER + /* bridge-netfilter defers calling some IP hooks to the bridge layer + * and still needs the conntrack reference. + */ + if (skb->nf_bridge == NULL) +#endif + nf_reset(skb); if (hh) { int hh_alen;