• Weixing Shi's avatar
    sctp: fix sctp to work with ipv6 source address routing · 62503411
    Weixing Shi authored
    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: default avatarWeixing Shi <Weixing.Shi@windriver.com>
    Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
    Signed-off-by: default avatarWei Yongjun <yjwei@cn.fujitsu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    62503411
ipv6.c 29 KB