]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit42f03327d0f5cf0d2560843def23b567e7f62c0a
treef4bd4ffc34bcf7993f8815ed55adc7cf0f4c2be9
parentacfd4dd625cda44a945406829191bb0059788629
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