sctp: fix sctp to work with ipv6 source address routing
authorWeixing Shi <Weixing.Shi@windriver.com>
Tue, 26 Apr 2011 21:36:32 +0000 (21:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Apr 2011 20:14:04 +0000 (13:14 -0700)
commit625034113bd45c71fb9e329f52f25fef9e6993a3
treef4bd4ffc34bcf7993f8815ed55adc7cf0f4c2be9
parent66e6961c8e53c0c0079d5b67faf9b7fe33525892
sctp: fix sctp to work with ipv6 source address routing

In the below test case, using the source address routing,
sctp can not work.
Node-A
1)ifconfig eth0 inet6 add 2001:1::1/64
2)ip -6 rule add from 2001:1::1 table 100 pref 100
3)ip -6 route add 2001:2::1 dev eth0 table 100
4)sctp_darn -H 2001:1::1 -P 250 -l &
Node-B
1)ifconfig eth0 inet6 add 2001:2::1/64
2)ip -6 rule add from 2001:2::1 table 100 pref 100
3)ip -6 route add 2001:1::1 dev eth0 table 100
4)sctp_darn -H 2001:2::1 -P 250 -h 2001:1::1 -p 250 -s

root cause:
Node-A and Node-B use the source address routing, and
at begining, source address will be NULL,sctp will
search the  routing table by the destination address,
because using the source address routing table, and
the result dst_entry will be NULL.

solution:
walk through the bind address list to get the source
address and then lookup the routing table again to get
the correct dst_entry.

Signed-off-by: Weixing Shi <Weixing.Shi@windriver.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/ipv6.c