mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ip6_tunnel: use the right value for ipv4 min mtu check in ip6_tnl_xmit
[ Upstream commit82a40777de] According to RFC791, 68 bytes is the minimum size of IPv4 datagram every device must be able to forward without further fragmentation while 576 bytes is the minimum size of IPv4 datagram every device has to be able to receive, so in ip6_tnl_xmit(), 68(IPV4_MIN_MTU) should be the right value for the ipv4 min mtu check in ip6_tnl_xmit. While at it, change to use max() instead of if statement. Fixes:c9fefa0819("ip6_tunnel: get the min mtu properly in ip6_tnl_xmit") Reported-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f6b82768f9
commit
87e7e8d405
@@ -1133,12 +1133,8 @@ route_lookup:
|
||||
max_headroom += 8;
|
||||
mtu -= 8;
|
||||
}
|
||||
if (skb->protocol == htons(ETH_P_IPV6)) {
|
||||
if (mtu < IPV6_MIN_MTU)
|
||||
mtu = IPV6_MIN_MTU;
|
||||
} else if (mtu < 576) {
|
||||
mtu = 576;
|
||||
}
|
||||
mtu = max(mtu, skb->protocol == htons(ETH_P_IPV6) ?
|
||||
IPV6_MIN_MTU : IPV4_MIN_MTU);
|
||||
|
||||
if (skb_dst(skb) && !t->parms.collect_md)
|
||||
skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu);
|
||||
|
||||
Reference in New Issue
Block a user