On Thu, 2009-10-22 at 15:02 -0700, Sean Hefty wrote:
> >For ipv6 I ran what I described previously.  What I do need to do is add
> >the option to rping to specify a source address and run it with various
> >address.  Any help you can give defining what exactly needs to be tested
> >would be appreciated.
> 
> You can also test with ucmatose to verify ipv4 still works.  Use the -b option
> to bind to a specific address.
> 
> - Sean 
> 

Sean
This patch adds ipv6 support to ucmatose.

Signed-off-by: David Wilder <dwil...@us.ibm.com>

------------------------------------------------------
 examples/cmatose.c |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

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();


_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to