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:
Родитель
88843104a1
Коммит
a2bd40ad31
|
@ -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) ||
|
if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
|
||||||
IS_PPPOE_IP(skb))
|
IS_PPPOE_IP(skb))
|
||||||
pf = PF_INET;
|
pf = PF_INET;
|
||||||
else
|
else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
|
||||||
|
IS_PPPOE_IPV6(skb))
|
||||||
pf = PF_INET6;
|
pf = PF_INET6;
|
||||||
|
else
|
||||||
|
return NF_ACCEPT;
|
||||||
|
|
||||||
nf_bridge_pull_encap_header(skb);
|
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) ||
|
if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
|
||||||
IS_PPPOE_IP(skb))
|
IS_PPPOE_IP(skb))
|
||||||
pf = PF_INET;
|
pf = PF_INET;
|
||||||
else
|
else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
|
||||||
|
IS_PPPOE_IPV6(skb))
|
||||||
pf = PF_INET6;
|
pf = PF_INET6;
|
||||||
|
else
|
||||||
|
return NF_ACCEPT;
|
||||||
|
|
||||||
#ifdef CONFIG_NETFILTER_DEBUG
|
#ifdef CONFIG_NETFILTER_DEBUG
|
||||||
if (skb->dst == NULL) {
|
if (skb->dst == NULL) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче