original_kernel/net/ipv4
Joel Sing 9fc3bbb4a7 ipv4/route.c: respect prefsrc for local routes
The preferred source address is currently ignored for local routes,
which results in all local connections having a src address that is the
same as the local dst address. Fix this by respecting the preferred source
address when it is provided for local routes.

This bug can be demonstrated as follows:

 # ifconfig dummy0 192.168.0.1
 # ip route show table local | grep local.*dummy0
 local 192.168.0.1 dev dummy0  proto kernel  scope host  src 192.168.0.1
 # ip route change table local local 192.168.0.1 dev dummy0 \
     proto kernel scope host src 127.0.0.1
 # ip route show table local | grep local.*dummy0
 local 192.168.0.1 dev dummy0  proto kernel  scope host  src 127.0.0.1

We now establish a local connection and verify the source IP
address selection:

 # nc -l 192.168.0.1 3128 &
 # nc 192.168.0.1 3128 &
 # netstat -ant | grep 192.168.0.1:3128.*EST
 tcp        0      0 192.168.0.1:3128        192.168.0.1:33228 ESTABLISHED
 tcp        0      0 192.168.0.1:33228       192.168.0.1:3128  ESTABLISHED

Signed-off-by: Joel Sing <jsing@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-01-04 11:35:12 -08:00
..
netfilter
Kconfig
Makefile
af_inet.c
ah4.c
arp.c
cipso_ipv4.c
datagram.c
devinet.c
esp4.c
fib_frontend.c Revert "ipv4: Allow configuring subnets as local addresses" 2010-12-23 12:03:57 -08:00
fib_hash.c
fib_lookup.h
fib_rules.c
fib_semantics.c
fib_trie.c net: allow GFP_HIGHMEM in __vmalloc() 2010-11-21 10:04:04 -08:00
gre.c
icmp.c xfrm: update flowi saddr in icmp_send if unset 2010-11-16 11:43:39 -08:00
igmp.c inet: fix ip_mc_drop_socket() 2010-11-09 08:26:42 -08:00
inet_connection_sock.c
inet_diag.c inet_diag: Make sure we actually run the same bytecode we audited. 2010-11-04 12:26:34 -07:00
inet_fragment.c
inet_hashtables.c inet: Fix __inet_inherit_port() to correctly increment bsockets and num_owners 2010-11-28 18:18:44 -08:00
inet_lro.c
inet_timewait_sock.c
inetpeer.c
ip_forward.c
ip_fragment.c
ip_gre.c
ip_input.c
ip_options.c
ip_output.c
ip_sockglue.c
ipcomp.c
ipconfig.c
ipip.c
ipmr.c
netfilter.c
proc.c tcp: Replace time wait bucket msg by counter 2010-12-08 12:16:33 -08:00
protocol.c
raw.c
route.c ipv4/route.c: respect prefsrc for local routes 2011-01-04 11:35:12 -08:00
syncookies.c
sysctl_net_ipv4.c tcp: restrict net.ipv4.tcp_adv_win_scale (#20312) 2010-11-28 10:39:45 -08:00
tcp.c tcp: Make TCP_MAXSEG minimum more correct. 2010-11-24 11:47:22 -08:00
tcp_bic.c
tcp_cong.c
tcp_cubic.c
tcp_diag.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c net: avoid limits overflow 2010-11-10 12:12:00 -08:00
tcp_ipv4.c tcp: fix listening_get_next() 2010-12-23 09:32:46 -08:00
tcp_lp.c
tcp_minisocks.c tcp: Replace time wait bucket msg by counter 2010-12-08 12:16:33 -08:00
tcp_output.c tcp: protect sysctl_tcp_cookie_size reads 2010-12-08 12:34:09 -08:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c
tcp_vegas.c
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tunnel4.c
udp.c net: fix nulls list corruptions in sk_prot_alloc 2010-12-16 14:26:56 -08:00
udp_impl.h
udplite.c net: fix nulls list corruptions in sk_prot_alloc 2010-12-16 14:26:56 -08:00
xfrm4_input.c
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c
xfrm4_state.c
xfrm4_tunnel.c