linux/net/sctp
Weixing Shi 625034113b 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>
2011-04-27 13:14:04 -07:00
..
Kconfig sctp: implement sctp association probing module 2010-04-30 22:41:09 -04:00
Makefile sctp: implement sctp association probing module 2010-04-30 22:41:09 -04:00
associola.c sctp: fix oops while removed transport still using as retran path 2011-04-12 19:33:51 -07:00
auth.c Fix common misspellings 2011-03-31 11:26:23 -03:00
bind_addr.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
chunk.c net/sctp: Use pr_fmt and pr_<level> 2010-08-26 14:11:48 -07:00
command.c [SCTP]: Remove sctp_add_cmd_sf wrapper bloat 2008-03-27 17:54:29 -07:00
debug.c sctp: remove completely unsed EMPTY state 2011-04-20 01:51:03 -07:00
endpointola.c sctp: bail from sctp_endpoint_lookup_assoc() if not bound 2011-04-20 01:51:03 -07:00
input.c inet: constify ip headers and in6_addr 2011-04-22 11:04:14 -07:00
inqueue.c net/sctp: Use pr_fmt and pr_<level> 2010-08-26 14:11:48 -07:00
ipv6.c sctp: fix sctp to work with ipv6 source address routing 2011-04-27 13:14:04 -07:00
objcnt.c net/sctp: Use pr_fmt and pr_<level> 2010-08-26 14:11:48 -07:00
output.c Fix common misspellings 2011-03-31 11:26:23 -03:00
outqueue.c sctp: move chunk from retransmit queue to abandoned list 2011-04-20 01:51:06 -07:00
primitive.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
probe.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-10-23 11:47:02 -07:00
proc.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
protocol.c sctp: Pass __GFP_NOWARN to hash table allocation attempts. 2011-03-30 17:51:36 -07:00
sm_make_chunk.c sctp: make heartbeat information in sctp_make_heartbeat() 2011-04-20 01:51:05 -07:00
sm_sideeffect.c sctp: fix to check the source address of COOKIE-ECHO chunk 2011-04-20 01:51:05 -07:00
sm_statefuns.c sctp: implement event notification SCTP_SENDER_DRY_EVENT 2011-04-21 10:35:44 -07:00
sm_statetable.c sctp: implement event notification SCTP_SENDER_DRY_EVENT 2011-04-21 10:35:44 -07:00
socket.c sctp: implement socket option SCTP_GET_ASSOC_ID_LIST 2011-04-21 10:35:43 -07:00
ssnmap.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysctl.c net: avoid limits overflow 2010-11-10 12:12:00 -08:00
transport.c net/sctp: Use pr_fmt and pr_<level> 2010-08-26 14:11:48 -07:00
tsnmap.c sctp: fix compile warnings in sctp_tsnmap_num_gabs 2011-02-20 11:10:15 -08:00
ulpevent.c sctp: implement event notification SCTP_SENDER_DRY_EVENT 2011-04-21 10:35:44 -07:00
ulpqueue.c Fix common misspellings 2011-03-31 11:26:23 -03:00