From patchwork Tue Oct 27 18:22:18 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David J Wilder X-Patchwork-Id: 56151 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n9RIMOi4020886 for ; Tue, 27 Oct 2009 18:22:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755777AbZJ0SWS (ORCPT ); Tue, 27 Oct 2009 14:22:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755870AbZJ0SWS (ORCPT ); Tue, 27 Oct 2009 14:22:18 -0400 Received: from e3.ny.us.ibm.com ([32.97.182.143]:39596 "EHLO e3.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755777AbZJ0SWS (ORCPT ); Tue, 27 Oct 2009 14:22:18 -0400 Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by e3.ny.us.ibm.com (8.14.3/8.13.1) with ESMTP id n9RIEGtb018819 for ; Tue, 27 Oct 2009 14:14:16 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n9RIMM97076552 for ; Tue, 27 Oct 2009 14:22:22 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id n9R8N1Ex021884 for ; Tue, 27 Oct 2009 04:23:02 -0400 Received: from [9.47.18.143] (wilder.beaverton.ibm.com [9.47.18.143]) by d01av03.pok.ibm.com (8.14.3/8.13.1/NCO v10.0 AVin) with ESMTP id n9R8Mx34021745; Tue, 27 Oct 2009 04:23:00 -0400 Subject: RE: [PATCH] link-local address fix for rdma_resolve_addr From: "David J. Wilder" To: Sean Hefty Cc: Jason Gunthorpe , rdreier@cisco.com, linux-rdma , pradeep@us.ibm.com, ewg@lists.openfabrics.org In-Reply-To: <660D538F30E647F3AE1E5E6C1ACBE882@amr.corp.intel.com> References: <1255992430.12075.7.camel@wilder.ibm.com> <20091019234329.GC9643@obsidianresearch.com> <676AB781CD644CC28E1AD4951EA4EEF8@amr.corp.intel.com> <20091020003344.GA14520@obsidianresearch.com> <1256164230.12075.31.camel@wilder.ibm.com> <20091021230845.GR14520@obsidianresearch.com> <1256245942.12075.46.camel@wilder.ibm.com> <660D538F30E647F3AE1E5E6C1ACBE882@amr.corp.intel.com> Date: Tue, 27 Oct 2009 11:22:18 -0700 Message-Id: <1256667738.16192.1.camel@wilder.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.12.3 (2.12.3-8.el5_2.2) Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org diff --git a/examples/cmatose.c b/examples/cmatose.c index 8c12347..481a6d0 100644 --- a/examples/cmatose.c +++ b/examples/cmatose.c @@ -516,15 +516,15 @@ static int get_addr(char *dst, struct sockaddr_in *addr) return ret; } - if (res->ai_family != PF_INET) { + if (res->ai_family == PF_INET) + memcpy(addr, res->ai_addr, sizeof(struct sockaddr_in)); + else if (res->ai_family == PF_INET6) + memcpy(addr, res->ai_addr, sizeof(struct sockaddr_in6)); + else ret = -1; - goto out; - } - *addr = *(struct sockaddr_in *) res->ai_addr; -out: - freeaddrinfo(res); - return ret; + freeaddrinfo(res); + return ret; } static int run_server(void) @@ -543,11 +543,18 @@ static int run_server(void) ret = get_addr(src_addr, &test.src_in); if (ret) goto out; - } else + if(test.src_in.sin_family == AF_INET) + ((struct sockaddr_in *) &test.src_in)->sin_port = port; + else + ((struct sockaddr_in6 *) &test.src_in)->sin6_port=port; + + } else { test.src_in.sin_family = PF_INET; + test.src_in.sin_port = port; + } + + ret = rdma_bind_addr(listen_id, (struct sockaddr *)&test.src_in); - test.src_in.sin_port = port; - ret = rdma_bind_addr(listen_id, test.src_addr); if (ret) { perror("cmatose: bind address failed"); goto out; @@ -628,8 +635,8 @@ static int run_client(void) printf("cmatose: connecting\n"); for (i = 0; i < connections; i++) { ret = rdma_resolve_addr(test.nodes[i].cma_id, - src_addr ? test.src_addr : NULL, - test.dst_addr, 2000); + src_addr ? (struct sockaddr *)&test.src_in : NULL, + (struct sockaddr *)&test.dst_in, 2000); if (ret) { perror("cmatose: failure getting addr"); connect_error();