netfilter: bridge-netfilter: fix refragmenting IP traffic encapsulated in PPPoE traffic
commit6c79bf0f2440fd250c8fce8d9b82fcf03d4e8350
authorBart De Schuymer <bdschuym@pandora.be>
Tue, 20 Apr 2010 14:22:01 +0000 (20 16:22 +0200)
committerPatrick McHardy <kaber@trash.net>
Tue, 20 Apr 2010 14:22:01 +0000 (20 16:22 +0200)
tree408e0680cac66c1a2ab6350de15a9c623da905a7
parent62910554656cdcd6b6f84a5154c4155aae4ca231
netfilter: bridge-netfilter: fix refragmenting IP traffic encapsulated in PPPoE traffic

The MTU for IP traffic encapsulated inside PPPoE traffic is smaller
than the MTU of the Ethernet device (1500). Connection tracking
gathers all IP packets and sometimes will refragment them in
ip_fragment(). We then need to subtract the length of the
encapsulating header from the mtu used in ip_fragment(). The check in
br_nf_dev_queue_xmit() which determines if ip_fragment() has to be
called is also updated for the PPPoE-encapsulated packets.
nf_bridge_copy_header() is also updated to make sure the PPPoE data
length field has the correct value.

Signed-off-by: Bart De Schuymer <bdschuym@pandora.be>
Signed-off-by: Patrick McHardy <kaber@trash.net>
include/linux/netfilter_bridge.h
net/bridge/br_netfilter.c
net/ipv4/ip_output.c