Re: [PATCH] sctp: full support for ipv6 ip_nonlocal_bind & IP_FREEBIND

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 23, 2017 at 9:36 PM, Xin Long <lucien.xin@xxxxxxxxx> wrote:
> On Sun, Oct 22, 2017 at 5:36 AM, Laszlo Toth <laszlth@xxxxxxxxx> wrote:
>> Commit 9b9742022888 ("sctp: support ipv6 nonlocal bind")
>> introduced support for the above options as v4 sctp did,
>> so patched sctp_v6_available().
>>
>> In the v4 implementation it's enough, because
>> sctp_inet_bind_verify() just returns with sctp_v4_available().
>> However sctp_inet6_bind_verify() has an extra check before that
>> for link-local scope_id, which won't respect the above options.
>>
>> Added the checks before calling ipv6_chk_addr(), but
>> not before the validation of scope_id.
>>
>> before (w/ both options):
>>  ./v6test fe80::10 sctp
>>  bind failed, errno: 99 (Cannot assign requested address)
>>  ./v6test fe80::10 tcp
>>  bind success, errno: 0 (Success)
>>
>> after (w/ both options):
>>  ./v6test fe80::10 sctp
>>  bind success, errno: 0 (Success)
>>
>> Signed-off-by: Laszlo Toth <laszlth@xxxxxxxxx>
>> ---
>>  net/sctp/ipv6.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
>> index 51c4887..ca75d2a 100644
>> --- a/net/sctp/ipv6.c
>> +++ b/net/sctp/ipv6.c
>> @@ -883,7 +883,9 @@ static int sctp_inet6_bind_verify(struct sctp_sock *opt, union sctp_addr *addr)
>>                         rcu_read_lock();
>>                         dev = dev_get_by_index_rcu(net, addr->v6.sin6_scope_id);
>>                         if (!dev ||
>> -                           !ipv6_chk_addr(net, &addr->v6.sin6_addr, dev, 0)) {
>> +                           !(opt->inet.freebind ||
>> +                           net->ipv6.sysctl.ip_nonlocal_bind ||
>> +                           ipv6_chk_addr(net, &addr->v6.sin6_addr, dev, 0))) {
> pls fix your indent, like:
> https://paste.fedoraproject.org/paste/ZhWmaJjepHfG~3DUp7YsBQ
and also add cc in your next post:
network dev <netdev@xxxxxxxxxxxxxxx>
David S. Miller <davem@xxxxxxxxxxxxx>

>
>>                                 rcu_read_unlock();
>>                                 return 0;
>>                         }
>> --
>> 2.7.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux