netfilter 02/09: bridge: Fix handling of non-IP packets in FORWARD/POST_ROUTING
Currently the bridge FORWARD/POST_ROUTING chains treats all non-IPv4 packets as IPv6. This packet fixes that by returning NF_ACCEPT on non-IP packets instead, just as is done in PRE_ROUTING. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
88843104a1
commit
a2bd40ad31
1 changed files with 8 additions and 2 deletions
|
@ -686,8 +686,11 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb,
|
|||
if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
|
||||
IS_PPPOE_IP(skb))
|
||||
pf = PF_INET;
|
||||
else
|
||||
else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
|
||||
IS_PPPOE_IPV6(skb))
|
||||
pf = PF_INET6;
|
||||
else
|
||||
return NF_ACCEPT;
|
||||
|
||||
nf_bridge_pull_encap_header(skb);
|
||||
|
||||
|
@ -828,8 +831,11 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff *skb,
|
|||
if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
|
||||
IS_PPPOE_IP(skb))
|
||||
pf = PF_INET;
|
||||
else
|
||||
else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
|
||||
IS_PPPOE_IPV6(skb))
|
||||
pf = PF_INET6;
|
||||
else
|
||||
return NF_ACCEPT;
|
||||
|
||||
#ifdef CONFIG_NETFILTER_DEBUG
|
||||
if (skb->dst == NULL) {
|
||||
|
|
Loading…
Reference in a new issue