• J
    ipv4/route.c: respect prefsrc for local routes · 9fc3bbb4
    Joel Sing 提交于
    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: NJoel Sing <jsing@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    9fc3bbb4
route.c 83.0 KB