WSL2-Linux-Kernel/net/ipv4
Julian Anastasov 636174219b ipv4: do not cache looped multicasts
Starting from 3.6 we cache output routes for
multicasts only when using route to 224/4. For local receivers
we can set RTCF_LOCAL flag depending on the membership but
in such case we use maddr and saddr which are not caching
keys as before. Additionally, we can not use same place to
cache routes that differ in RTCF_LOCAL flag value.

	Fix it by caching only RTCF_MULTICAST entries
without RTCF_LOCAL (send-only, no loopback). As a side effect,
we avoid unneeded lookup for fnhe when not caching because
multicasts are not redirected and they do not learn PMTU.

	Thanks to Maxime Bizon for showing the caching
problems in __mkroute_output for 3.6 kernels: different
RTCF_LOCAL flag in cache can lead to wrong ip_mc_output or
ip_output call and the visible problem is that traffic can
not reach local receivers via loopback.

Reported-by: Maxime Bizon <mbizon@freebox.fr>
Tested-by: Maxime Bizon <mbizon@freebox.fr>
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-22 16:06:49 -05:00
..
netfilter netfilter: nf_nat: don't check for port change on ICMP tuples 2012-10-28 22:43:34 +01:00
Kconfig
Makefile
af_inet.c
ah4.c
arp.c
cipso_ipv4.c
datagram.c
devinet.c
esp4.c
fib_frontend.c ipv4: fix sending of redirects 2012-10-08 17:42:35 -04:00
fib_lookup.h
fib_rules.c sections: fix section conflicts in net 2012-10-06 03:04:45 +09:00
fib_semantics.c ipv4: make sure nh_pcpu_rth_output is always allocated 2012-10-08 17:42:35 -04:00
fib_trie.c
gre.c
icmp.c
igmp.c igmp: export symbol ip_mc_leave_group 2012-10-01 18:39:44 -04:00
inet_connection_sock.c ipv4: introduce rt_uses_gateway 2012-10-08 17:42:36 -04:00
inet_diag.c net: inet_diag -- Return error code if protocol handler is missed 2012-11-04 01:56:49 -04:00
inet_fragment.c
inet_hashtables.c
inet_lro.c
inet_timewait_sock.c
inetpeer.c Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
ip_forward.c ipv4: introduce rt_uses_gateway 2012-10-08 17:42:36 -04:00
ip_fragment.c
ip_gre.c gre: fix sparse warning 2012-10-01 17:35:31 -04:00
ip_input.c
ip_options.c
ip_output.c ipv4: introduce rt_uses_gateway 2012-10-08 17:42:36 -04:00
ip_sockglue.c ipv4: avoid undefined behavior in do_ip_setsockopt() 2012-11-11 17:53:13 -05:00
ip_vti.c ipv4/ip_vti.c: VTI fix post-decryption forwarding 2012-11-14 21:40:21 -05:00
ipcomp.c
ipconfig.c
ipip.c
ipmr.c sections: fix section conflicts in net 2012-10-06 03:04:45 +09:00
netfilter.c
ping.c
proc.c
protocol.c
raw.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-10-02 11:11:09 -07:00
route.c ipv4: do not cache looped multicasts 2012-11-22 16:06:49 -05:00
syncookies.c
sysctl_net_ipv4.c tcp: sysctl interface leaks 16 bytes of kernel memory 2012-10-11 15:12:33 -04:00
tcp.c tcp: fix retransmission in repair mode 2012-11-15 17:44:58 -05:00
tcp_bic.c
tcp_cong.c
tcp_cubic.c
tcp_diag.c
tcp_fastopen.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c net: fix divide by zero in tcp algorithm illinois 2012-11-01 11:55:59 -04:00
tcp_input.c tcp: tcp_replace_ts_recent() should not be called from tcp_validate_incoming() 2012-11-13 14:35:17 -05:00
tcp_ipv4.c tcp: add SYN/data info to TCP_INFO 2012-10-22 15:16:06 -04:00
tcp_lp.c
tcp_memcontrol.c
tcp_metrics.c tcp: handle tcp_net_metrics_init() order-5 memory allocation failures 2012-11-16 13:36:27 -05:00
tcp_minisocks.c tcp: add SYN/data info to TCP_INFO 2012-10-22 15:16:06 -04:00
tcp_output.c tcp: fix retransmission in repair mode 2012-11-15 17:44:58 -05:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c tcp: Reject invalid ack_seq to Fast Open sockets 2012-10-23 02:42:56 -04:00
tcp_vegas.c
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tunnel4.c
udp.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-10-02 11:11:09 -07:00
udp_diag.c
udp_impl.h
udplite.c
xfrm4_input.c
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c xfrm: Fix the gc threshold value for ipv4 2012-11-13 09:15:07 +01:00
xfrm4_state.c
xfrm4_tunnel.c