mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 08:20:50 +07:00
netfilter: bridge: remove BRNF_STATE_BRIDGED flag
Its not needed anymore since 2bf540b73e
([NETFILTER]: bridge-netfilter: remove deferred hooks).
Before this it was possible to have physoutdev set for locally generated
packets -- this isn't the case anymore:
BRNF_STATE_BRIDGED flag is set when we assign nf_bridge->physoutdev,
so physoutdev != NULL means BRNF_STATE_BRIDGED is set.
If physoutdev is NULL, then we are looking at locally-delivered and
routed packet.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
c055d5b03b
commit
e4bb9bcbfb
@ -19,7 +19,6 @@ enum nf_br_hook_priorities {
|
|||||||
|
|
||||||
#define BRNF_PKT_TYPE 0x01
|
#define BRNF_PKT_TYPE 0x01
|
||||||
#define BRNF_BRIDGED_DNAT 0x02
|
#define BRNF_BRIDGED_DNAT 0x02
|
||||||
#define BRNF_BRIDGED 0x04
|
|
||||||
#define BRNF_NF_BRIDGE_PREROUTING 0x08
|
#define BRNF_NF_BRIDGE_PREROUTING 0x08
|
||||||
#define BRNF_8021Q 0x10
|
#define BRNF_8021Q 0x10
|
||||||
#define BRNF_PPPoE 0x20
|
#define BRNF_PPPoE 0x20
|
||||||
|
@ -736,8 +736,6 @@ static unsigned int br_nf_forward_ip(const struct nf_hook_ops *ops,
|
|||||||
if (pf == NFPROTO_IPV4 && br_parse_ip_options(skb))
|
if (pf == NFPROTO_IPV4 && br_parse_ip_options(skb))
|
||||||
return NF_DROP;
|
return NF_DROP;
|
||||||
|
|
||||||
/* The physdev module checks on this */
|
|
||||||
nf_bridge->mask |= BRNF_BRIDGED;
|
|
||||||
nf_bridge->physoutdev = skb->dev;
|
nf_bridge->physoutdev = skb->dev;
|
||||||
if (pf == NFPROTO_IPV4)
|
if (pf == NFPROTO_IPV4)
|
||||||
skb->protocol = htons(ETH_P_IP);
|
skb->protocol = htons(ETH_P_IP);
|
||||||
@ -857,7 +855,12 @@ static unsigned int br_nf_post_routing(const struct nf_hook_ops *ops,
|
|||||||
struct net_device *realoutdev = bridge_parent(skb->dev);
|
struct net_device *realoutdev = bridge_parent(skb->dev);
|
||||||
u_int8_t pf;
|
u_int8_t pf;
|
||||||
|
|
||||||
if (!nf_bridge || !(nf_bridge->mask & BRNF_BRIDGED))
|
/* if nf_bridge is set, but ->physoutdev is NULL, this packet came in
|
||||||
|
* on a bridge, but was delivered locally and is now being routed:
|
||||||
|
*
|
||||||
|
* POST_ROUTING was already invoked from the ip stack.
|
||||||
|
*/
|
||||||
|
if (!nf_bridge || !nf_bridge->physoutdev)
|
||||||
return NF_ACCEPT;
|
return NF_ACCEPT;
|
||||||
|
|
||||||
if (!realoutdev)
|
if (!realoutdev)
|
||||||
|
@ -56,8 +56,7 @@ physdev_mt(const struct sk_buff *skb, struct xt_action_param *par)
|
|||||||
|
|
||||||
/* This only makes sense in the FORWARD and POSTROUTING chains */
|
/* This only makes sense in the FORWARD and POSTROUTING chains */
|
||||||
if ((info->bitmask & XT_PHYSDEV_OP_BRIDGED) &&
|
if ((info->bitmask & XT_PHYSDEV_OP_BRIDGED) &&
|
||||||
(!!(nf_bridge->mask & BRNF_BRIDGED) ^
|
(!!nf_bridge->physoutdev ^ !(info->invert & XT_PHYSDEV_OP_BRIDGED)))
|
||||||
!(info->invert & XT_PHYSDEV_OP_BRIDGED)))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ((info->bitmask & XT_PHYSDEV_OP_ISIN &&
|
if ((info->bitmask & XT_PHYSDEV_OP_ISIN &&
|
||||||
|
Loading…
Reference in New Issue
Block a user