kernel-fxtec-pro1x/include/net
Maciej Żenczykowski 9db62b7591 net/ipv4: always honour route mtu during forwarding
[ Upstream commit 02a1b175b0e92d9e0fa5df3957ade8d733ceb6a0 ]

Documentation/networking/ip-sysctl.txt:46 says:
  ip_forward_use_pmtu - BOOLEAN
    By default we don't trust protocol path MTUs while forwarding
    because they could be easily forged and can lead to unwanted
    fragmentation by the router.
    You only need to enable this if you have user-space software
    which tries to discover path mtus by itself and depends on the
    kernel honoring this information. This is normally not the case.
    Default: 0 (disabled)
    Possible values:
    0 - disabled
    1 - enabled

Which makes it pretty clear that setting it to 1 is a potential
security/safety/DoS issue, and yet it is entirely reasonable to want
forwarded traffic to honour explicitly administrator configured
route mtus (instead of defaulting to device mtu).

Indeed, I can't think of a single reason why you wouldn't want to.
Since you configured a route mtu you probably know better...

It is pretty common to have a higher device mtu to allow receiving
large (jumbo) frames, while having some routes via that interface
(potentially including the default route to the internet) specify
a lower mtu.

Note that ipv6 forwarding uses device mtu unless the route is locked
(in which case it will use the route mtu).

This approach is not usable for IPv4 where an 'mtu lock' on a route
also has the side effect of disabling TCP path mtu discovery via
disabling the IPv4 DF (don't frag) bit on all outgoing frames.

I'm not aware of a way to lock a route from an IPv6 RA, so that also
potentially seems wrong.

Signed-off-by: Maciej Żenczykowski <maze@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Sunmeet Gill (Sunny) <sgill@quicinc.com>
Cc: Vinay Paradkar <vparadka@qti.qualcomm.com>
Cc: Tyler Wear <twear@quicinc.com>
Cc: David Ahern <dsahern@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-10-29 09:54:56 +01:00
..
9p
bluetooth Bluetooth: Disconnect if E0 is used for Level 4 2020-10-17 10:12:57 +02:00
caif
iucv
netfilter netfilter: nf_tables: fix destination register zeroing 2020-09-09 19:04:25 +02:00
netns
nfc
phonet
sctp sctp: Don't advertise IPv4 addresses if ipv6only is set on the socket 2020-06-30 23:17:05 -04:00
tc_act
6lowpan.h
act_api.h net sched: fix reporting the first-time use timestamp 2020-06-03 08:19:15 +02:00
addrconf.h ipv6: fix memory leaks on IPV6_ADDRFORM path 2020-08-11 15:32:34 +02:00
af_ieee802154.h
af_rxrpc.h
af_unix.h
af_vsock.h
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
bond_3ad.h
bond_alb.h
bond_options.h
bonding.h bonding: fix state transition issue in link monitoring 2019-11-12 19:20:26 +01:00
busy_poll.h net: annotate lockless accesses to sk->sk_napi_id 2019-11-10 11:27:39 +01:00
calipso.h
cfg80211-wext.h
cfg80211.h cfg80211: Fix radar event during another phy CAC 2020-02-05 14:43:46 +00:00
cfg802154.h
checksum.h
cipso_ipv4.h
cls_cgroup.h
codel.h
codel_impl.h
codel_qdisc.h
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsfield.h
dst.h net: Added pointer check for dst->ops->neigh_lookup in dst_neigh_lookup_skb 2020-07-22 09:31:59 +02:00
dst_cache.h
dst_metadata.h
dst_ops.h net: add bool confirm_neigh parameter for dst_ops.update_pmtu 2020-01-04 19:13:37 +01:00
erspan.h
esp.h
ethoc.h
failover.h
fib_notifier.h
fib_rules.h fib: add missing attribute validation for tun_id 2020-03-18 07:14:14 +01:00
firewire.h
flow.h
flow_dissector.h net: sched: correct flower port blocking 2020-03-05 16:42:16 +01:00
fou.h
fq.h net/flow_dissector: switch to siphash 2019-11-10 11:27:54 +01:00
fq_impl.h net/fq_impl: Switch to kvmalloc() for memory allocation 2019-12-05 09:19:45 +01:00
garp.h
gen_stats.h
genetlink.h genetlink: remove genl_bind 2020-07-22 09:31:58 +02:00
geneve.h
gre.h
gro_cells.h
gtp.h
gue.h
hwbm.h
icmp.h
ieee80211_radiotap.h
ieee802154_netdev.h
if_inet6.h
ife.h
ila.h
inet6_connection_sock.h
inet6_hashtables.h
inet_common.h
inet_connection_sock.h tcp_bbr: adapt cwnd based on ack aggregation estimation 2020-09-26 18:01:32 +02:00
inet_ecn.h sched: consistently handle layer3 header accesses in the presence of VLANs 2020-07-22 09:32:00 +02:00
inet_frag.h
inet_hashtables.h tcp/dccp: fix possible race __inet_lookup_established() 2020-01-04 19:13:41 +01:00
inet_sock.h
inet_timewait_sock.h
inetpeer.h
ip.h net/ipv4: always honour route mtu during forwarding 2020-10-29 09:54:56 +01:00
ip6_checksum.h
ip6_fib.h
ip6_route.h net: ipv6: do not consider routes via gateways for anycast address check 2020-04-21 09:03:04 +02:00
ip6_tunnel.h
ip_fib.h
ip_tunnels.h
ip_vs.h ipvs: allow connection reuse for unconfirmed conntrack 2020-08-19 08:14:56 +02:00
ipcomp.h
ipconfig.h
ipv6.h net: ipv6: add net argument to ip6_dst_lookup_flow 2020-04-29 16:31:16 +02:00
ipv6_frag.h
ipx.h bonding/alb: properly access headers in bond_alb_xmit() 2020-02-11 04:34:14 -08:00
iw_handler.h
kcm.h
l3mdev.h
lag.h
lapb.h
lib80211.h
llc.h llc: avoid blocking in llc_sap_close() 2019-11-20 18:46:35 +01:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h llc: fix sk_buff leak in llc_conn_service() 2019-11-06 13:06:23 +01:00
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
lwtunnel.h
mac80211.h
mac802154.h
mip6.h
mld.h
mpls.h
mpls_iptunnel.h
mrp.h
ncsi.h
ndisc.h
neighbour.h net: add annotations on hh->hh_len lockless accesses 2020-01-09 10:19:09 +01:00
net_failover.h
net_namespace.h netns: fix GFP flags in rtnl_net_notifyid() 2019-11-10 11:27:42 +01:00
net_ratelimit.h
netevent.h
netlabel.h
netlink.h
netprio_cgroup.h
netrom.h
nexthop.h
nl802154.h
nsh.h
p8022.h
page_pool.h
ping.h
pkt_cls.h net_sched: fix ops->bind_class() implementations 2020-02-01 09:37:06 +00:00
pkt_sched.h sched: consistently handle layer3 header accesses in the presence of VLANs 2020-07-22 09:32:00 +02:00
pptp.h
protocol.h
psample.h
psnap.h
raw.h
rawv6.h
red.h
regulatory.h
request_sock.h net: add {READ|WRITE}_ONCE() annotations on ->rskq_accept_head 2020-01-27 14:51:18 +01:00
rose.h
route.h
rsi_91x.h
rtnetlink.h
sch_generic.h net_sched: fix ops->bind_class() implementations 2020-02-01 09:37:06 +00:00
scm.h
secure_seq.h
seg6.h
seg6_hmac.h
seg6_local.h
slhc_vj.h
smc.h
snmp.h
sock.h net: silence data-races on sk_backlog.tail 2020-10-01 13:14:26 +02:00
sock_reuseport.h udp: correct reuseport selection with connected sockets 2019-09-21 07:16:43 +02:00
Space.h
stp.h
strparser.h
switchdev.h
tcp.h tcp: fix SO_RCVLOWAT hangs with fat skbs 2020-05-20 08:18:38 +02:00
tcp_states.h
timewait_sock.h
tipc.h
tls.h
transp_v6.h
tso.h
tun_proto.h
udp.h
udp_tunnel.h
udplite.h
vsock_addr.h
vxlan.h
wext.h
wimax.h
x25.h
x25device.h
xdp.h
xdp_sock.h
xfrm.h xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate 2020-10-14 10:31:24 +02:00