kernel_optimize_test/net/bridge
Florian Westphal 894d91c633 netfilter: bridge: add support for pppoe filtering
[ Upstream commit 28b78ecffea8078d81466b2e01bb5a154509f1ba ]

This makes 'bridge-nf-filter-pppoe-tagged' sysctl work for
bridged traffic.

Looking at the original commit it doesn't appear this ever worked:

 static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
[..]
        if (skb->protocol == htons(ETH_P_8021Q)) {
                skb_pull(skb, VLAN_HLEN);
                skb->network_header += VLAN_HLEN;
+       } else if (skb->protocol == htons(ETH_P_PPP_SES)) {
+               skb_pull(skb, PPPOE_SES_HLEN);
+               skb->network_header += PPPOE_SES_HLEN;
        }
 [..]
	NF_HOOK(... POST_ROUTING, ...)

... but the adjusted offsets are never restored.

The alternative would be to rip this code out for good,
but otoh we'd have to keep this anyway for the vlan handling
(which works because vlan tag info is in the skb, not the packet
 payload).

Reported-and-tested-by: Amish Chana <amish@3g.co.za>
Fixes: 516299d2f5 ("[NETFILTER]: bridge-nf: filter bridged IPv4/IPv6 encapsulated in pppoe traffic")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-01-27 10:53:52 +01:00
..
netfilter netfilter: nf_conntrack_bridge: Fix memory leak when error 2021-08-18 08:59:09 +02:00
br_arp_nd_proxy.c net: bridge: when suppression is enabled exclude RARP packets 2021-05-19 10:12:53 +02:00
br_device.c bridge: Fix a deadlock when enabling multicast snooping 2020-12-07 17:14:43 -08:00
br_fdb.c net: bridge: fix flags interpretation for extern learn fdb entries 2021-08-18 08:59:13 +02:00
br_forward.c net: bridge: mcast: when forwarding handle filter mode and blocked flag 2020-09-23 13:24:35 -07:00
br_if.c net: bridge: fix memleak in br_add_if() 2021-08-18 08:59:13 +02:00
br_input.c
br_ioctl.c
br_mdb.c net: bridge: mcast: add support for blocked port groups 2020-09-23 13:24:34 -07:00
br_mrp_netlink.c
br_mrp_switchdev.c bridge: mrp: Fix the usage of br_mrp_port_switchdev_set_state 2021-02-17 11:02:29 +01:00
br_mrp.c net: bridge: mrp: Update ring transitions. 2021-07-19 09:44:46 +02:00
br_multicast.c net: bridge: multicast: fix MRD advertisement router port marking race 2021-07-20 16:05:37 +02:00
br_netfilter_hooks.c netfilter: bridge: add support for pppoe filtering 2022-01-27 10:53:52 +01:00
br_netfilter_ipv6.c
br_netlink_tunnel.c
br_netlink.c net: bridge: fix under estimation in br_get_linkxstats_size() 2021-10-13 10:04:27 +02:00
br_nf_core.c
br_private_mrp.h bridge: mrp: Fix the usage of br_mrp_port_switchdev_set_state 2021-02-17 11:02:29 +01:00
br_private_stp.h
br_private_tunnel.h
br_private.h net: bridge: mcast: use multicast_membership_interval for IGMPv3 2021-10-27 09:56:54 +02:00
br_stp_bpdu.c
br_stp_if.c
br_stp_timer.c
br_stp.c
br_switchdev.c net: bridge: don't notify switchdev for local FDB addresses 2021-03-30 14:32:04 +02:00
br_sysfs_br.c
br_sysfs_if.c net: bridge: use switchdev for port flags set through sysfs too 2021-03-07 12:34:07 +01:00
br_vlan_options.c
br_vlan_tunnel.c net: bridge: fix vlan tunnel dst refcnt when egressing 2021-06-23 14:42:53 +02:00
br_vlan.c net: bridge: vlan: fix error return code in __vlan_add() 2020-12-04 15:41:06 -08:00
br.c net: bridge: fix flags interpretation for extern learn fdb entries 2021-08-18 08:59:13 +02:00
Kconfig
Makefile