From: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
To: "Hefty, Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Shachar Raindel <raindel-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Yotam Kenneth <yotamke-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH for-next] RDMA/CMA: Mark IPv4 addresses correctly when the listener is IPv6
Date: Tue, 16 Dec 2014 13:34:02 +0200 [thread overview]
Message-ID: <549018AA.8070107@mellanox.com> (raw)
In-Reply-To: <6c0a5a44a42a43ee96c05907dcdc0a51-LOZWmgKjnYgQouBfZGh8ttqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
On 11/16/2014 11:04 AM, Shachar Raindel wrote:
>
>> -----Original Message-----
>> From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-
>> owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Hefty, Sean
>> Sent: Thursday, November 13, 2014 6:24 PM
>> To: Or Gerlitz
>> Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Roland Dreier; Yotam Kenneth
>> Subject: RE: [PATCH for-next] RDMA/CMA: Mark IPv4 addresses correctly
>> when the listener is IPv6
>>
>>> From: Yotam Kenneth <yotamke-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>>>
>>> When accepting a new connection with the listener being IPv6, the
>>> family of the new connection is set as IPv6. This causes cma_zero_addr
>>> function to return true on an non-zero address. As a result, the wrong
>>> code path is taken. This causes the connection request to be rejected,
>>> as the RDMA-CM code looks for the wrong type of device.
>>>
>>> Since copying the ip address is done in different function depending
>>> on the family (cma_save_ip4_info/cma_save_ip6_info) this is fixed by
>>> hard coding the family of the IP address according to the function.
>>>
>>> Signed-off-by: Yotam Kenneth <yotamke-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>>> Signed-off-by: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>>> ---
>>> drivers/infiniband/core/cma.c | 8 ++++----
>>> 1 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/infiniband/core/cma.c
>> b/drivers/infiniband/core/cma.c
>>> index d570030..6e5e11c 100644
>>> --- a/drivers/infiniband/core/cma.c
>>> +++ b/drivers/infiniband/core/cma.c
>>> @@ -866,12 +866,12 @@ static void cma_save_ip4_info(struct rdma_cm_id
>> *id,
>>> struct rdma_cm_id *listen_i
>>>
>>> listen4 = (struct sockaddr_in *) &listen_id->route.addr.src_addr;
>>> ip4 = (struct sockaddr_in *) &id->route.addr.src_addr;
>>> - ip4->sin_family = listen4->sin_family;
>>> + ip4->sin_family = AF_INET;
>>> ip4->sin_addr.s_addr = hdr->dst_addr.ip4.addr;
>>> ip4->sin_port = listen4->sin_port;
>>>
>>> ip4 = (struct sockaddr_in *) &id->route.addr.dst_addr;
>>> - ip4->sin_family = listen4->sin_family;
>>> + ip4->sin_family = AF_INET;
>>> ip4->sin_addr.s_addr = hdr->src_addr.ip4.addr;
>>> ip4->sin_port = hdr->port;
>>> }
>>> @@ -883,12 +883,12 @@ static void cma_save_ip6_info(struct rdma_cm_id
>> *id,
>>> struct rdma_cm_id *listen_i
>>>
>>> listen6 = (struct sockaddr_in6 *) &listen_id->route.addr.src_addr;
>>> ip6 = (struct sockaddr_in6 *) &id->route.addr.src_addr;
>>> - ip6->sin6_family = listen6->sin6_family;
>>> + ip6->sin6_family = AF_INET6;
>>> ip6->sin6_addr = hdr->dst_addr.ip6;
>>> ip6->sin6_port = listen6->sin6_port;
>>>
>>> ip6 = (struct sockaddr_in6 *) &id->route.addr.dst_addr;
>>> - ip6->sin6_family = listen6->sin6_family;
>>> + ip6->sin6_family = AF_INET6;
>>> ip6->sin6_addr = hdr->src_addr.ip6;
>>> ip6->sin6_port = hdr->port;
>> I can't say that I understand what the problem is or how the change
>> fixes it. Is listen4->sin_port above not AF_INET? If that's the case,
>> then aren't we still taking the wrong code path and just masking some
>> bug further up in the code path?
>
> An IPv6 listener socket can accept IPv4 connection, especially
> when listening to the "any" interface. This behavior is
> configurable with the net.ipv6.bindv6only sysctl flag. In
> RDMA-CM, we use this flag as the baseline value for the CM-ID
> flag "afonly". If afonly is set to 0, a listening RDMA-CM ID for
> IPv6 any address will happily accept an IPv4 connection. The IP
> addresses saved in cma_save_ip[46]_info are only used internally
> in the RDMA-CM code for selecting the appropriate device for
> answering and sending a reply. As such, there is no problem with
> hard coding the appropriate address family in the functions.
>
>
Hi Sean,
Any comment? can you please ack the patch or continue the discussion?
Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-12-16 11:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 15:52 [PATCH for-next] RDMA/CMA: Mark IPv4 addresses correctly when the listener is IPv6 Or Gerlitz
[not found] ` <1415893935-4583-1-git-send-email-ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-11-13 16:24 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A8237399E01B66-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-16 9:04 ` Shachar Raindel
[not found] ` <6c0a5a44a42a43ee96c05907dcdc0a51-LOZWmgKjnYgQouBfZGh8ttqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2014-12-16 11:34 ` Or Gerlitz [this message]
[not found] ` <549018AA.8070107-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-12-16 18:38 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A8237399E2CCB3-8oqHQFITsIHTXloPLtfHfbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-17 4:22 ` Or Gerlitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=549018AA.8070107@mellanox.com \
--to=ogerlitz-vpraknaxozvwk0htik3j/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=raindel-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=yotamke-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.