linux/net
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
..
9p net/9p: Return error on read with NULL buffer 2010-10-28 09:08:49 -05:00
802
8021q
appletalk
atm atm: correct sysfs 'device' link creation and parent relationships 2010-12-10 15:45:05 -08:00
ax25 net: ax25: fix information leak to userland 2010-11-10 10:14:33 -08:00
bluetooth Bluetooth: Fix initial RFCOMM DLC security level 2010-12-06 15:47:44 -02:00
bridge bridge: stp: ensure mac header is set 2011-01-03 12:09:33 -08:00
caif caif: Remove noisy printout when disconnecting caif socket 2010-11-03 18:50:04 -07:00
can CAN: Use inode instead of kernel address for /proc file 2010-12-31 11:13:27 -08:00
ceph Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2010-12-20 21:32:20 -08:00
core Revert "ipv4: Allow configuring subnets as local addresses" 2010-12-23 12:03:57 -08:00
dcb
dccp dccp: fix error in updating the GAR 2010-11-28 11:29:27 -08:00
decnet DECnet: don't leak uninitialized stack byte 2010-11-28 11:32:30 -08:00
dns_resolver
dsa
econet econet: Fix crash in aun_incoming(). 2010-12-08 20:51:15 -08:00
ethernet
ieee802154
ipv4 ipv4/route.c: respect prefsrc for local routes 2011-01-04 11:35:12 -08:00
ipv6 ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed. 2010-12-19 20:22:23 -08:00
ipx
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 12:06:56 -08:00
iucv
key
l2tp l2tp: Fix modalias of l2tp_ip 2010-12-08 12:13:43 -08:00
lapb
llc llc: fix a device refcount imbalance 2010-12-08 09:58:44 -08:00
mac80211 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 12:06:56 -08:00
netfilter netfilter: fix IP_VS dependencies 2010-11-18 13:14:33 -08:00
netlabel
netlink
netrom
packet net: Fix header size check for GSO case in recvmsg (af_packet) 2010-11-12 11:06:46 -08:00
phonet
rds rds: Integer overflow in RDS cmsg handling 2010-11-17 12:20:52 -08:00
rfkill
rose
rxrpc
sched net_sched: sch_sfq: fix allot handling 2010-12-20 13:18:16 -08:00
sctp sctp: fix the return value of getting the sctp partial delivery point 2010-12-16 14:48:44 -08:00
sunrpc sunrpc: prevent use-after-free on clearing XPT_BUSY 2010-12-07 20:39:55 -05:00
tipc net: tipc: fix information leak to userland 2010-11-09 09:25:46 -08:00
unix af_unix: limit recursion level 2010-11-29 09:45:15 -08:00
wanrouter
wimax
wireless cfg80211: fix can_beacon_sec_chan, reenable HT40 2010-11-18 11:35:05 -05:00
x25 x25: decrement netdev reference counts on unload 2010-12-08 12:13:44 -08:00
xfrm xfrm: Fix xfrm_state_migrate leak 2010-12-09 20:35:27 -08:00
Kconfig
Makefile
TUNABLE
compat.c net: Limit socket I/O iovec total length to INT_MAX. 2010-10-28 11:47:52 -07:00
nonet.c
socket.c net: Document the kernel_recvmsg() function 2010-12-10 11:13:18 -08:00
sysctl_net.c